Javascript 如何在一个查询中使用.skip()、.limit()和总匹配结果进行MongoDB文本搜索?
我使用MongoDB 2.6的文本搜索非常成功,但要将全部匹配结果添加到搜索响应对象中,我必须执行单独的查询。有没有一种方法可以使用聚合框架将这两者结合到一个查询中Javascript 如何在一个查询中使用.skip()、.limit()和总匹配结果进行MongoDB文本搜索?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我使用MongoDB 2.6的文本搜索非常成功,但要将全部匹配结果添加到搜索响应对象中,我必须执行单独的查询。有没有一种方法可以使用聚合框架将这两者结合到一个查询中 Product.collection.find( { $text : { $search : query } }, { score : { $meta: "textScore" } } ) .sort({ score: { $meta : "textScore" } }) .s
Product.collection.find(
{ $text : { $search : query } },
{ score : { $meta: "textScore" } }
)
.sort({ score: { $meta : "textScore" } })
.skip(0)
.limit(20)
.toArray(function(error, products) {
if (error) {
console.log(error);
} else {
Product.collection.count(
{ $text : { $search : query } }
, function(err, count){
if (error) {
console.log(error);
} else {
console.log("Counts Match? : ", count, products.length)
}
});
}
});
@ac360,在v2.6中,应该可以在聚合框架中使用$text,并且在$group子句中为{total:{$sum:1}}添加一个计算列应该满足您的需要。请看完两个类似的示例。我也知道这一点,但您能否提供一个示例,说明如何与上面的其余代码相匹配?我已经试过了,但还是想不出来。我仍然需要返回一个产品数组,但我还需要一个单独的对象,其中包含total count。