我正在使用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":