यदि आप रिकॉर्ड चुनना चाहते हैं तो एक तिथि सीमा का उपयोग करें:
db.collection.find({
created: { "$gte": new Date("2013-05-27"), "$lt": new Date("2013-05-28") }
})
और वह दो तिथियों के बीच आने वाले सभी निहित घंटों, मिनटों आदि का चयन करता है।
तो आपको चाहिए दिनांक मानों का उपयोग करने का प्रयास करें और स्ट्रिंग्स में जबरदस्ती न करें।
यदि आप इसे एकत्रीकरण करने के लिए चाहते हैं या अन्यथा जरूरत परिणाम केवल एक दिन के प्रारूप में हैं, फिर $project और दिनांक ऑपरेटर :
db.collection.aggregate([
// Still match on the normal date forms, this time whole month
{ "$match": {
created: {
"$gte": new Date("2013-05-01"),
"$lt": new Date("2013-05-31")
}
}},
// Project the date
{ "$project": {
"date": {
"year" : { "$year" : "$created" },
"month" : { "$month" : "$created" },
"day": : { "$dayOfMonth": "$created" }
},
"title": 1
}},
// Group on day and title
{ "$group": {
"_id": {
"date" : "$date",
"title" : "$title"
},
"count": { "$sum": 1 }
}},
// Sort by date
{ "$sort": {
"_id.date.year": 1,
"_id.date.month": 1,
"_id.date.day": 1,
}},
// Project nicer dates and document
{ "$project": {
"_id": 0,
"date": { "$concat": [
{ "$substr": [ "$_id.date.year", 0, 4 ] },
"-",
{ "$substr": [ "$_id.date.month", 0, 2 ] },
"-",
{ "$substr": [ "$_id.date.day", 0, 2 ] }
]},
"title": "$_id.title",
"count": 1
}}
])