मोंगो एकत्रीकरण ढांचे का उपयोग करके नया उत्तर
इस प्रश्न के पूछे जाने और उत्तर देने के बाद, 10gen ने मोंगोडब संस्करण 2.2 को एक एकत्रीकरण ढांचे के साथ जारी किया, जो अब इस तरह की क्वेरी करने का बेहतर तरीका है। यह क्वेरी थोड़ी चुनौतीपूर्ण है क्योंकि आप तिथि के आधार पर समूह बनाना चाहते हैं और संग्रहीत मान टाइमस्टैम्प हैं, इसलिए आपको टाइमस्टैम्प को मिलान की तारीखों में बदलने के लिए कुछ करना होगा। उदाहरण के प्रयोजनों के लिए मैं सिर्फ एक प्रश्न लिखूंगा जो सही मायने रखता है।
db.col.aggregate(
{ $group: { _id: { $dayOfYear: "$date"},
click: { $sum: 1 } } }
)
यह कुछ इस तरह लौटाएगा:
[
{
"_id" : 144,
"click" : 165
},
{
"_id" : 275,
"click" : 12
}
]
आपको $match
. का उपयोग करना होगा क्वेरी को उस दिनांक सीमा तक सीमित करने के लिए जिसमें आप रुचि रखते हैं और $project
_id
का नाम बदलने के लिए से date
. तक . आप वर्ष के दिन को एक तिथि में कैसे परिवर्तित करते हैं, पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है। :-)
10gen में बुकमार्क करने लायक एक आसान SQL से Mongo एकत्रीकरण रूपांतरण चार्ट है। दिनांक एकत्रीकरण ऑपरेटरों पर एक विशिष्ट लेख भी है।
थोडा और अधिक उत्साही होने के लिए, आप इसका उपयोग कर सकते हैं:
db.col.aggregate([
{ $group: {
_id: {
$add: [
{ $dayOfYear: "$date"},
{ $multiply:
[400, {$year: "$date"}]
}
]},
click: { $sum: 1 },
first: {$min: "$date"}
}
},
{ $sort: {_id: -1} },
{ $limit: 15 },
{ $project: { date: "$first", click: 1, _id: 0} }
])
जो आपको नवीनतम 15 दिन देगा और date
. में प्रत्येक दिन के भीतर कुछ डेटाटाइम लौटाएगा खेत। उदाहरण के लिए:
[
{
"click" : 431,
"date" : ISODate("2013-05-11T02:33:45.526Z")
},
{
"click" : 702,
"date" : ISODate("2013-05-08T02:11:00.503Z")
},
...
{
"click" : 814,
"date" : ISODate("2013-04-25T00:41:45.046Z")
}
]