我的服务器路由为“q = word / s = 0 / t = 5”,其中q是查询字符串,s是起始文档,t是限制。
因此,对于第一个请求,我将根据q查询文档,并显示检索到的结果的0到5的结果。
对于下一个请求,比如q = word / s = 6 / t = 5,我必须显示从6号文件到10号文件的文件,依此类推。
我有什么方法可以在mongo中实现这一目标。我正在使用nodejs和mongojs。 任何帮助表示赞赏。
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);
}
});
答案 0 :(得分:0)
您可以使用聚合框架来执行此操作,因为问题中的示例不会产生您描述的结果。
以下是您可以用于为服务器提供的每个查询的查询
collection.aggregate([
{ $skip : s },
{ $match : { index : { $all : patterns } } },
{ $limit : t}
])