如何在MongoDB $ group聚合中包含文档字段?

时间:2016-06-07 18:54:41

标签: javascript mongodb aggregation-framework

假设我的数据集如下 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"字段的输出?

0 个答案:

没有答案