मैं डेटा के कुल सेट के लिए mongodb एकत्रीकरण का उपयोग कर रहा हूं। मेरी स्थिति थोड़ा जटिल है। मैं निम्नलिखित के रूप में एक संग्रह है:दिन के बाद मोंगोडब एकत्रीकरण
{
startTime: ISODate("2014-12-31T10:20:30Z"),
customerId: 123,
ping: "2",
link: "3"
}
अब मैं निम्नलिखित के रूप में एक और संग्रह करने के लिए डेटा इकट्ठा करना चाहते हैं:
{
_id: {
day: ISODate("2014-12-31T00:00:00Z"),
customerId: 123
},
hours: [
{
hour: ISODate("2014-12-31T10:00:00Z"),
pings: 2,
links: 3
},
{
hour: ISODate("2014-12-31T11:00:00Z"),
pings: 5,
links: 6
}
]
}
आप देख सकते हैं डेटा घंटे से पहले और उसके बाद दिन-ब-समूह है। मुझे दिन भर उन्हें समूहबद्ध करने के लिए निम्नलिखित समेकन क्वेरी मिल गई है लेकिन घंटों तक उन्हें कैसे समूहित किया जाए? कोई उपाय?
var pipeline = [
{
$project : {
startTime : 1,
customerId: 1,
ping:1,
link:1,
date : "$startTime",
h : {
"$hour" : "$startTime"
},
m : {
"$minute" : "$startTime"
},
s : {
"$second" : "$startTime"
},
ml : {
"$millisecond" : "$startTime"
}
}
},
{
$project: {
startTime : 1,
customerId: 1,
ping:1,
link:1,
date : {
"$subtract" : [
"$date",
{
"$add" : [
"$ml",
{
"$multiply" : [
"$s",
1000
]
},
{
"$multiply" : [
"$m",
60,
1000
]
},
{
"$multiply" : [
"$h",
60,
60,
1000
]
}
]
}
]
}
}
},
{
$match: {
"startTime": {
$gte: new ISODate("2013-12-01T07:00:00Z"),
$lte: new ISODate("2014-01-01T08:00:00Z"),
}
}
},
// Aggregate the data
{
$group: {
_id: {day : "$date", customerId: "$customerId"},
pings : {$sum: "$ping"},
links : {$sum: "$links"}
}
}
];
धन्यवाद। क्या आप कृपया मेरी मदद कर सकते हैं? मेरे पास एक शेड्यूलर है जो पिछले घंटे से डेटा को पिछले घंटे से एकत्र करने के लिए हर घंटे चलाएगा: '{" _id ": { " ग्राहक आईडी ": 123," दिन ": ISODate (" 2012-06-20: 00: 00 : 00Z ")}, " घंटे ": [{" घंटा ": ISODate (" 2012-06-20: 01: 00: 00Z ")," पिंग्स ": 2," लिंक ": 3}]} 'के बाद उपरोक्त समेकन क्वेरी चलाते हुए, मुझे एकत्रित डेटा को संग्रहीत करने के लिए इस संग्रह में विलय/अपरिवर्तित करने की आवश्यकता है। मैं उसे कैसे प्राप्त कर सकता हूं? धन्यवाद – user3756522
@ user3756522 यह वास्तव में एक और प्रश्न की तरह लगता है और सबसे अच्छी तरह से एक नई पोस्ट के रूप में पूछा जाता है जहां आप टिप्पणियों के बजाए अपना इरादा ठीक से समझाते हैं। उत्तर में दिखाए गए प्रश्न को आपके द्वारा भेजे जाने वाले सीमा के लिए हर दिन और हर घंटे एकत्रित किया जाएगा। इसके लिए आपका '$ मैच' हमेशा पाइपलाइन का ** पहला ** चरण होना चाहिए। MongoDB 2.6 के साथ आपका कुल आउटपुट एक कर्सर हो सकता है जिसे आप परिणामों को संसाधित करने के लिए पुन: प्रयास करते हैं –