Javascript 如何在一个查询中使用.skip()、.limit()和总匹配结果进行MongoDB文本搜索?

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

我使用MongoDB 2.6的文本搜索非常成功,但要将全部匹配结果添加到搜索响应对象中,我必须执行单独的查询。有没有一种方法可以使用聚合框架将这两者结合到一个查询中

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。