MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

(कैसे) समुच्चय () एक सूचकांक को तोड़ सकता है?

मुझे संदेह है कि मुद्दा यह नहीं था कि एकत्रीकरण एक सूचकांक को तोड़ देगा, बल्कि इसके बजाय एकत्रीकरण ने अनुक्रमणिका का उपयोग नहीं किया और एक संग्रह स्कैन करेगा।

जब $ हों, तो एग्रीगेशन इंडेक्स का फायदा उठा सकता है मैच और/या $सॉर्ट चरण एक पाइपलाइन की शुरुआत में रखा गया। यह एकत्रीकरण केवल एक $group है चरण, जिसका अर्थ है कि गणना की गणना करने के लिए पूरे संग्रह को पुनरावृत्त करने की आवश्यकता होगी।

मैंने संग्रह स्कैन करते हुए एकत्रीकरण को दिखाते हुए एक सरल उदाहरण नीचे दिया है, तब भी जब सरणी फ़ील्ड अनुक्रमित होती है।

> db.foo.insert({ "x" : [ 1, 2 ] } )
> db.foo.insert({ "x" : [ 1 ] } )
> db.foo.createIndex({ "x" : 1 } )
...

> db.foo.aggregate([ { $group: { _id: null, cnt: { $sum : { $size: "$x" } } } } ] )
{ "_id" : null, "cnt" : 3 }

// Results of a .explain() - see 'winningPlan' below
> db.foo.explain(true).aggregate([ { $group: { _id: null, cnt: { $sum : { $size: "$x" } } } } ] )
{
    "stages" : [
        {
            "$cursor" : {
                "query" : {

                },
                "fields" : {
                    "x" : 1,
                    "_id" : 0
                },
                "queryPlanner" : {
                    "plannerVersion" : 1,
                    "namespace" : "stack.foo",
                    "indexFilterSet" : false,
                    "parsedQuery" : {

                    },
                    "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "direction" : "forward"
                    },
                    "rejectedPlans" : [ ]
                },
                "executionStats" : {
                    "executionSuccess" : true,
                    "nReturned" : 2,
                    "executionTimeMillis" : 0,
                    "totalKeysExamined" : 0,
                    "totalDocsExamined" : 2,
                    "executionStages" : {
                        "stage" : "COLLSCAN",
                        "nReturned" : 2,
                        "executionTimeMillisEstimate" : 0,
                        "works" : 4,
                        "advanced" : 2,
                        "needTime" : 1,
                        "needYield" : 0,
                        "saveState" : 1,
                        "restoreState" : 1,
                        "isEOF" : 1,
                        "invalidates" : 0,
                        "direction" : "forward",
                        "docsExamined" : 2
                    },
                    "allPlansExecution" : [ ]
                }
            }
        },
        {
            "$group" : {
                "_id" : {
                    "$const" : null
                },
                "cnt" : {
                    "$sum" : {
                        "$size" : [
                            "$x"
                        ]
                    }
                }
            }
        }
    ],
    "ok" : 1,
    ...
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError को कैसे ठीक करें:समाप्त हो चुके सत्र का उपयोग नहीं कर सकता

  2. Mongodb में एक कुंजी के आधार पर डुप्लिकेट कैसे निकालें?

  3. Django में कैशिंग MongoDB कनेक्शन

  4. मुनिन मोंगोडब प्लगइन नहीं दिखा रहा है। . .?

  5. मोंगोडब के लिए एसक्यूएल क्वेरी?