पहले प्रश्न के लिए, हाँ, आप समेकित समझा सकते हैं।
db.collection.runCommand("aggregate", {pipeline: YOUR_PIPELINE, explain: true})
दूसरा एक के लिए, अनुक्रमित आप रेंज प्रश्नों का अनुकूलन करने के भी एकत्रीकरण पाइप लाइन के $ मैच चरण के लिए लागू होगी अगर वे पाइप लाइन की शुरुआत में पाए जाते हैं पैदा करते हैं। तो आप इंडेक्स अनुकूलन पर ध्यान केंद्रित करने का अधिकार हैं।
Pipeline Operators and Indexes देखें।
अद्यतन 2
कुल और के बारे में अधिक व्याख्या करते हैं: संस्करण 2.4 पर यह अविश्वसनीय है; 2.6+ पर यह क्वेरी निष्पादन डेटा प्रदान नहीं करता है। https://groups.google.com/forum/#!topic/mongodb-user/2LzAkyaNqe0
अद्यतन 1
एक एकत्रीकरण की ट्रांसक्रिप्ट MongoDB 2.4.5 पर समझाने।
$ mongo so
MongoDB shell version: 2.4.5
connecting to: so
> db.q19329239.runCommand("aggregate", {pipeline: [{$group: {_id: '$user.id', hits: {$sum: 1}}}, {$match: {hits: {$gt: 10}}}], explain: true})
{
"serverPipeline" : [
{
"query" : {
},
"projection" : {
"user.id" : 1,
"_id" : 0
},
"cursor" : {
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 1031,
"nscannedObjects" : 1031,
"nscanned" : 1031,
"nscannedObjectsAllPlans" : 1031,
"nscannedAllPlans" : 1031,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
},
"allPlans" : [
{
"cursor" : "BasicCursor",
"n" : 1031,
"nscannedObjects" : 1031,
"nscanned" : 1031,
"indexBounds" : {
}
}
],
"server" : "ficrm-rafa.local:27017"
}
},
{
"$group" : {
"_id" : "$user.id",
"hits" : {
"$sum" : {
"$const" : 1
}
}
}
},
{
"$match" : {
"hits" : {
"$gt" : 10
}
}
}
],
"ok" : 1
}
सर्वर संस्करण।
$ mongo so
MongoDB shell version: 2.4.5
connecting to: so
> db.version()
2.4.5
अस्थिर नवीनतम में नहीं है: https://jira.mongodb.org/browse/SERVER-4504 लेकिन तब तक कोई है, और कोई नहीं अनुक्रमित mathc अतीत उपयोग किया जा रहा है के रूप में इस तरह के सूचकांक optimsation नहीं है वहाँ एक अच्छा रास्ता – Sammaye
@ सैमएय यह गलत है, मैच निश्चित रूप से इंडेक्स का उपयोग करता है जैसा कि क्रमबद्ध करता है। –
@AyayaKamsky मैंने अभी कहा है, मैंने वास्तव में मैच से कहा था, यानी $ समूह – Sammaye