Kin*_*ien 5 mongodb aggregation-framework
我正在使用以下查询来获取数据库中每个帖子的最新评论:
db.comments.aggregate([
{
"$match": {
"post_id": {
"$in": [ObjectId("52c5ce24dca32d32740c1435"), ObjectId("52c5ce24dca32d32740c15ad")]
}
}
},
{
"$sort": {"_id": -1}
},
{
"$group": {
"_id": "$post_id",
"lastComment": {
"$first": "$_id"
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
我希望它返回整个评论的文档,但它只返回_id每个文档的字段.那么将所有最新评论作为整个文档(或至少包括其他一些领域)的正确方法是什么?
Sha*_*had 18
目前,您无法comment通过单个$first运营商获取整个文档.但是您可以_id在$group步骤中包含其他必要字段(类似于字段):
{
"$group": {
_id: "$post_id",
lastComment: { "$first": "$_id" },
field_1: { "$first": "$field_1" },
field_2: { "$first": "$field_2" },
// ...
field_N: { "$first": "$field_N" }
}
}
Run Code Online (Sandbox Code Playgroud)
根据这个JIRA票证:https://jira.mongodb.org/browse/SERVER-5916,整个文档可以从2.5.3版本的聚合操作返回.可以使用新变量:$$ROOT或$$CURRENT:
{
"$group": {
_id: "$post_id",
lastComment: { "$first": "$$CURRENT" }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |