Как подсчитать количество документов в поле даты в MongoDB

Сценарий: учтите, у меня в MongoDB есть следующая коллекция:

{
    "_id" : "CustomeID_3723",    
    "IsActive" : "Y",
    "CreatedDateTime" : "2013-06-06T14:35:00Z"
}

Теперь я хочу узнать количество созданных документов в конкретный день (скажем, 2013-03-04). Итак, я пытаюсь найти решение, используя структуру агрегации.

Информация: на данный момент у меня построен следующий запрос:

    collection.aggregate([
        { $group: {
            _id: '$CreatedDateTime'
            }
        },
        { $group: {
            count: {  _id: null, $sum: 1 }
            }
        },
        { $project: {
            _id: 0,
            "count" :"$count"
            }
        }
    ])

Проблема: теперь, учитывая вышеупомянутый запрос, он дает мне счет. Но не только по дате! Это также требует времени для уникального подсчета.

Вопрос: учитывая, что в поле указана дата ISO, может ли кто-нибудь сказать мне, как считать документы только на основе даты (т.е. без учета времени)?


person Amol M Kulkarni    schedule 06.06.2013    source источник


Ответы (1)


Замените две группы на

{$project:{day:{$dayOfMonth:'$createdDateTime'},month:{$month:'$createdDateTime'},year:{$year:'$createdDateTime'}}},
{$group:{_id:{day:'$day',month:'$month',year:'$year'}, count: {$sum:1}}}

Подробнее об операторах даты можно узнать здесь: http://docs.mongodb.org/manual/reference/aggregation/#date-operators

person Sammaye    schedule 06.06.2013
comment
Так как он давал мне { _id: { day: '25', month: '05', year: '2013' }, count: 31 }, { _id: { day: '26', month: '06', year: '2013' }, count: 23 },.. за каждое свидание. Мне нужно сделать вторую группу с { $group: { _id: null, count: { $sum: 1}} } .. Спасибо за ваше время .. - person Amol M Kulkarni; 06.06.2013