假设我的数据集如下 AFTER 在其上完成了大量的聚合魔法:
{ "postid" : "5700edfe03fcdb000347bebf", "comms" : { "commenter" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570175e6c002e46edb922ae6")}, "flag" : "M"}
{ "postid" : "5700edfe03fcdb000347bebf", "comms" : { "commenter" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570175e6c002e46edb922ae5")}, "flag" : "M"}
{ "postid" : "5700edfb03fcdb000347bebe", "comms" : { "commenter" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570176a3c002e46edb922ae7")}, "flag" : "F"}
{ "postid" : "5700edfb03fcdb000347bebe", "comms" : { "commenter" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570176a3c002e46edb922ae6")}, "flag" : "M"}
{ "postid" : "5700edfb03fcdb000347bebe", "comms" : { "commenter" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570176a3c002e46edb922ae5")}, "flag" : "G"}
每一行代表一个帖子,然后评论链接到按时间排序的帖子,最新评论位于顶部,最旧评论位于底部。您可以通过查看comms.id
现在我想在聚合查询中提取数据,使其看起来像这样。以下数据代表了所有帖子中的最新评论:
{ "_id" : "5700edfb03fcdb000347bebe", "maxcom" : ObjectId("570176a3c002e46edb922ae7"), "flag" : "F"}
{ "_id" : "5700edfe03fcdb000347bebf", "maxcom" : ObjectId("570175e6c002e46edb922ae6"), "flag" : "M"}
我最接近获得结果的是运行以下查询:
group3={"$group": {
"_id" : "$postid",
"maxcom" : {
"$max" : "$comms.id"
}
}};
上面的代码返回:
{ "_id" : "5700edfb03fcdb000347bebe", "maxcom" : ObjectId("570176a3c002e46edb922ae7") }
{ "_id" : "5700edfe03fcdb000347bebf", "maxcom" : ObjectId("570175e6c002e46edb922ae6") }
如何返回我要求显示"flag"
字段的输出?