Если вы планируете часто выполнять групповой запрос, вам следует подумать о добавлении нового поля или полей, которые позволят вам группировать по нужному периоду времени. Предыдущий ответ об использовании map-lower - отличный вариант, если это специальный запрос, который не требует настройки производительности. Например, у меня есть коллекция, которую иногда нужно агрегировать по дням, неделям, месяцам и т. Д. Вот пример записи:
{"_id" : ObjectId("4ddaed3a8b0f766963000003"),
"name": "Sample Data",
"time" : "Mon May 23 2011 17:26:50 GMT-0600 (MDT)",
"period" : {
"m" : 201105,
"w" : 201121,
"d" : 20110523,
"h" : 2011052317
}
}
С этими дополнительными полями я могу сделать намного больше с помощью функции группы, а также индексировать эти поля для более быстрых запросов. Вы можете использовать целые числа, как я, или строки - в любом случае будет работать, но помните, что параметры вашего запроса должны быть одного типа данных. Мне нравятся целые числа, потому что кажется, что они должны работать немного лучше и использовать меньше места (просто догадка).