Mongoose, MongoDB एकत्रीकरण ढांचे के चारों ओर एक हल्का आवरण प्रदान करता है। यदि आप एकत्रीकरण में नए हैं, तो आप इसके बारे में MongoDB डॉक्स से अधिक जान सकते हैं:http:/ /docs.mongodb.org/manual/aggregation/
अपने डेटा को ऊपर वर्णित फ़ॉर्म में मालिश करने के लिए, आप $group संचालन की एक श्रृंखला के साथ एक एकत्रीकरण पाइपलाइन का उपयोग कर सकते हैं। यहाँ यह नेवला ढांचे का उपयोग कर रहा है:
var dateSchema = mongoose.Schema({…});
var DateItem = mongoose.model('DateItem', dateSchema);
DateItem.aggregate(
{ $group : {
_id : { year: { $year : "$accessDate" }, month: { $month : "$accessDate" },day: { $dayOfMonth : "$accessDate" }},
count : { $sum : 1 }}
},
{ $group : {
_id : { year: "$_id.year", month: "$_id.month" },
dailyusage: { $push: { day: "$_id.day", count: "$count" }}}
},
{ $group : {
_id : { year: "$_id.year" },
monthlyusage: { $push: { month: "$_id.month", dailyusage: "$dailyusage" }}}
},
function (err, res)
{ if (err) ; // TODO handle error
console.log(res);
});
});
पहले $group के परिणामस्वरूप इस फ़ॉर्म के दस्तावेज़ होंगे, प्रत्येक दिन के लिए एक:
{
"_id" : { "year" : 2013, "month" : 8, "day" : 15 },
"count" : 1
}
दूसरे $group का परिणाम महीने के आधार पर समूहित दस्तावेज़ों में होगा:
{
"_id" : { "year" : 2012, "month" : 11 },
"dailyusage" : [
{ "day" : 6, "count" : 1 },
{ "day" : 9, "count" : 1 },
... ]
},
और तीसरे $group के परिणामस्वरूप और भी बड़े दस्तावेज़ होंगे, प्रत्येक वर्ष के लिए एक।
यह क्वेरी आपके डेटा को बड़े, पदानुक्रमित दस्तावेज़ों में एकत्रित करेगी। यदि आप एकत्रीकरण के बाद इस डेटा पर क्वेरी चलाने की योजना बना रहे हैं, हालांकि, यह आपके डेटा के लिए सबसे उपयोगी रूप नहीं हो सकता है। विचार करें कि आप समेकित डेटा का उपयोग कैसे करेंगे। एक स्कीमा जिसमें अधिक छोटे दस्तावेज़ शामिल हैं, शायद प्रति माह एक या प्रति दिन एक भी, अधिक सुविधाजनक हो सकता है।