У меня есть коллекция 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 для возврата всех значений последней записи (определяемой ISODate()) за данный месяц для каждого site_id. Итак, за месяц 2013-12 я хотел бы получить запись 2 (последнюю в 2013-12 для abc1) и запись 4 (последнюю в 2013-12 для abc2).
Я могу сделать это с помощью функции map/reduce, но мне было интересно, выполнимо ли это только с API Mongoose и структурой агрегации (без вызова функции map/reduce). Я чувствую, что это должно быть, но я не смог заставить это работать!