MongoDB聚合和项目结果总数



我正在使用db.collection.aggregate(),使用下面的查询。我得到的结果很好,其中投影字段正是下面指定的字段。我还想获得符合此条件的文档总数。

    db.collection.aggregate([
        { $match: { "age": {"$gte": 20, "$lte": 30}} },
        { $lookup: { from: "photos", localField: "post_id", foreignField: "post_id", as: "photos"} },
        { $project: {
            "title": 1,
            "photos.path": 1,
            "age": 1,
            "city": 1,
            "location": 1,
            "post_id": 1,
            "score": { "$meta": "textScore"}
        } },
        { $sort: { score: { $meta: "textScore" } } },
        { $skip: 0 },
        { $limit: 30 },
    ])

经过一些研究,我发现我需要添加以下选项:

      { $group: { _id: null, count: { $sum: 1 } } }

然而,添加了这一点后,我现在得到的回应是:

      { "_id" : null, "count" : 400 }

计数是正确的,但我要投影的字段已不存在。有没有一种方法可以在一个结果中获得计数和我想要投影的字段?或者我必须运行两个单独的查询,一个用于计数,另一个用于要投影的字段?

是的,可以使用$push 访问分组文档

将其添加到聚合管道

{$group:{_id:{"title":"$title","age":"$age","city":"$city","location":"$slocation","post_id":

最新更新