0

我的服务器的路由为“q=word/s=0/t=5”,其中 q 是查询字符串,s 是起始文档,t 是限制。

因此,对于第一个请求,我将根据 q 查询文档,并显示检索到的 0 到 5 的结果。

对于下一个请求,比如 q=word/s=6/t=5,我必须显示从文档编号 6 到 10 的文档。依此类推。

有什么办法可以在 mongo 中实现。我正在使用带有 mongojs 的 nodejs。任何帮助表示赞赏。

var words = req.params.q.split(" ");
    var patterns = [];
    // Create case insensitve patterns for each word
    words.forEach(function(item){
      patterns.push(caseInsensitive(item));
    });

db.collection('mycollection', function(err, collection) {
          collection.find({index : {$all: patterns }}).skip((s-1)*t).limit(t).toArray(function(err, items) {
            if( err || !items) {
              res.header("Access-Control-Allow-Origin", "*");
              console.log('nothing');
              res.send([]);
            } else {
              res.header("Access-Control-Allow-Origin", "*");
              console.log(items);
              res.send(items);
            }
          });   
4

1 回答 1

0

您可以使用聚合框架来做到这一点,因为您在问题中的示例不会产生您所描述的结果。

这是您可以用于提供给服务器的每个查询的查询

collection.aggregate([
                      { $skip : s }, 
                      { $match : { index : { $all : patterns } } },
                      { $limit : t} 
                      ])
于 2014-01-14T08:58:55.837 回答