【发布时间】:2014-01-06 15:38:01
【问题描述】:
我有一个 Mongo 集合,其中包含如下所示的文档:
{
"record" : "1",
"site_id" : "abc1",
"month" : "2013-12",
"recorded" : ISODate("2013-12-18T05:00:00.000Z"),
"status" : "OK",
"comment" : "blah blah blah..."
}
{
"record" : "2",
"site_id" : "abc1",
"month" : "2013-12",
"recorded" : ISODate("2013-12-18T06:00:00.000Z"),
"status" : "OK",
"comment" : "blah blah blah..."
}
{
"record" : "3",
"site_id" : "abc2",
"month" : "2013-12",
"recorded" : ISODate("2013-12-18T06:00:00.000Z"),
"status" : "OK",
"comment" : "blah blah blah..."
}
{
"record" : "4",
"site_id" : "abc2",
"month" : "2013-12",
"recorded" : ISODate("2013-12-18T11:00:00.000Z"),
"status" : "ERROR",
"comment" : "something wrong"
}
{
"record" : "5",
"site_id" : "abc2",
"month" : "2013-11",
"recorded" : ISODate("2013-11-17T08:00:00.000Z"),
"status" : "OK",
"comment" : "blah blah blah..."
}
我想使用 $group 运算符进行 Mongoose 调用,以返回每个 site_id 给定月份的最新记录(由 ISODate() 确定)的所有值。因此,对于 2013-12 月份,我想找回记录 2(abc1 是 2013-12 年最新的)和记录 4(abc2 是 2013-12 年最新的)。
我可以使用 map/reduce 函数来做到这一点,但我想知道仅使用 Mongoose API 和聚合框架(不调用 map/reduce 函数)是否可行。我觉得它应该是,但我无法让它工作!
【问题讨论】:
-
您能否编辑问题以包含您所做的一些尝试以及哪些无效?使用聚合框架和管道,最好是按部就班地工作。
标签: mongodb mongoose aggregation-framework