db.foos.aggregate(
[
{ $project : { day : {$substr: ["$TimeStamp", 0, 10] }}},
{ $group : { _id : "$day", number : { $sum : 1 }}},
{ $sort : { _id : 1 }}
]
)
तिथि के अनुसार समूह को एकत्रीकरण ढांचे में दो चरणों में किया जा सकता है, यदि छँटाई वांछित है, तो परिणाम को छाँटने के लिए एक अतिरिक्त तीसरे चरण की आवश्यकता है:
$project
$substr
. के संयोजन में प्रत्येक दस्तावेज़ से ISODate ऑब्जेक्ट के पहले 10 वर्ण (YYYY:MM:DD) लेता है (परिणाम "_id" और "दिन" फ़ील्ड वाले दस्तावेज़ों का एक संग्रह है);$group
दिन के हिसाब से समूह, प्रत्येक मिलान दस्तावेज़ के लिए संख्या 1 जोड़ना (संक्षेप करना);$sort
"_id" से आरोही, जो पिछले एकत्रीकरण चरण से एक दिन है - यदि क्रमबद्ध परिणाम वांछित है तो यह वैकल्पिक है।
यह समाधान db.twitter.ensureIndex( { TimeStamp: 1 } )
जैसी अनुक्रमणिकाओं का लाभ नहीं उठा सकता , क्योंकि यह ISODate ऑब्जेक्ट को फ़्लाई पर एक स्ट्रिंग ऑब्जेक्ट में बदल देता है। बड़े संग्रह (लाखों दस्तावेज़) के लिए यह एक प्रदर्शन बाधा हो सकती है और अधिक परिष्कृत तरीकों का उपयोग किया जाना चाहिए।