2013-06-06 3 views
1

Сценарий: Рассмотрим, у меня есть следующий набор в 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" 
      } 
     } 
    ]) 

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

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

ответ

6

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

{$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

+1

Так как он дал мне '{_id: {день: '25', месяц: '05' , год: '2013'}, count: 31}, {_id: {день: '26', месяц: '06', год: '2013'}, count: 23}, .. 'за каждую дату. Мне нужно также сделать вторую группу с '{$ group: {_id: null, count: {$ sum: 1}}}' .. Спасибо за ваше время .. –

 Смежные вопросы

  • Нет связанных вопросов^_^