Im пытается получить количество определенных элементов, сгруппированных по определенным датам. Это работает, используя следующий совокупный запрос:Можно ли использовать агрегированный запрос MongoDB с совпадением даты?
// this query works, without matching dates
[
{'$match': {
'some_id': ObjectId('foobar'),
'some_boolean_value': true
}
},
{'$project':
{'day':
{'$substr': ['$some_date', 0, 10]}}
},
{'$group': {_id: '$day', count: { '$sum': 1 }}},
{'$sort': {_id: -1}}
]
Следующий шаг состоит в том, что я хочу использовать этот запрос, но с датой ограничений. Я хочу подсчет, сгруппированный в день, между определенными лимитами.
// the query below does not work as soon as date matching is added
// this query always return 0 documents
[
{'$match': {
'some_id': ObjectId('foobar'),
'some_boolean_value': true,
'some_date':
{
'$gte': '2015-08-01T00:00:00.000Z',
'$lte': '2015-08-31T23:59:59.999Z'
}
}
},
{'$project':
{'day':
{'$substr': ['$some_date', 0, 10]}}
},
{'$group': {_id: '$day', count: { '$sum': 1 }}},
{'$sort': {_id: -1}}
]
Вы используете "ниточки". В ваших документах содержатся «строки» или они содержат объекты «Дата». –
@BlakesSeven Они содержат объекты Date, я просто заполнил их фактическими датами в качестве примера. –
Тогда вы не используете '$ substr' то, что не является« строкой ». Это должно быть довольно ясно. –