【发布时间】:2017-06-02 17:24:02
【问题描述】:
我有mongo 类型的文档-
{
"_id" : ObjectId("77f02ee61df85c423b6a4e79"),
"client" : "1"
"type" : "type1",
"hierarchy" : "hier1",
"creationDate" : ISODate("2015-09-09T13:06:44Z"),
"model" : "m1"
},
{
"_id" : ObjectId("77f02ee61df85c423b6a4e80"),
"client" : "1"
"type" : "type1",
"hierarchy" : "hier1",
"creationDate" : ISODate("2015-09-10T14:06:44Z"),
"model" : "m2"
},
{
"_id" : ObjectId("77f02ee61df85c423b6a4e81"),
"client" : "1"
"type" : "type1",
"hierarchy" : "hier2",
"creationDate" : ISODate("2015-09-10T13:06:44Z"),
"model" : "m3"
},
{
"_id" : ObjectId("77f02ee61df85c423b6a4e82"),
"client" : "2"
"type" : "type2",
"hierarchy" : "hier2",
"creationDate" : ISODate("2015-09-10T14:06:44Z"),
"model" : "m4"
}
我想回答这个查询 - 对于给定的client,获取每个type 和hierarchy 组合(类型+层次结构)的所有最新(creationDate)文档。
例如。 client = 1 的上述数据集的输出将如下所示
{
"_id" : ObjectId("77f02ee61df85c423b6a4e80"),
"client" : "1"
"type" : "type1",
"hierarchy" : "hier1",
"creationDate" : ISODate("2015-09-10T14:06:44Z"),
"model" : "m2"
},
{
"_id" : ObjectId("77f02ee61df85c423b6a4e81"),
"client" : "1"
"type" : "type1",
"hierarchy" : "hier2",
"creationDate" : ISODate("2015-09-10T13:06:44Z"),
"model" : "m3"
}
我尝试使用给定的流/管道创建查询-
-
Matchclient = 1所在的文档($match内部聚合)。 -
group通过“列表”和“层次结构”($group内部聚合)。 - 我想通过最新的
creationDate字段聚合上一步中的文档组。而不是应用聚合函数($sum, $avg etc),我实际上想要每个组中具有最新creationDate字段的文档
但我被困在流程的第 3 点。我不知道如何聚合具有相同 type 和 hierarchy 的文档,并在单个 mongo 查询中为每种类型和层次结构选择具有最新日期 (creationDate) 的文档。
【问题讨论】:
标签: mongodb aggregation-framework