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