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

MongoDB गणना () बनाम एकत्रीकरण

.count() कहीं अधिक तेज है। आप कॉल करके कार्यान्वयन देख सकते हैं

// Note the missing parentheses at the end
db.collection.count

जो कर्सर की लंबाई लौटाता है। डिफ़ॉल्ट क्वेरी की (यदि count() बिना किसी क्वेरी दस्तावेज़ के कॉल किया जाता है), जिसे बदले में _id_ . की लंबाई लौटाने के रूप में लागू किया जाता है इंडेक्स, आईआईआरसी.

हालाँकि, एक एकत्रीकरण प्रत्येक दस्तावेज़ को पढ़ता है और उसे संसाधित करता है। यह .count() . के साथ परिमाण के समान क्रम में केवल आधा हो सकता है जब इसे केवल कुछ 100 हज़ार दस्तावेज़ों से अधिक करते हैं (अपनी RAM के अनुसार दें और लें)।

कुछ 12M प्रविष्टियों के साथ संग्रह के लिए नीचे फ़ंक्शन लागू किया गया था:

function checkSpeed(col,iterations){

  // Get the collection
  var collectionUnderTest = db[col];

  // The collection we are writing our stats to
  var stats = db[col+'STATS']

  // remove old stats
  stats.remove({})

  // Prevent allocation in loop
  var start = new Date().getTime()
  var duration = new Date().getTime()

  print("Counting with count()")
  for (var i = 1; i <= iterations; i++){
    start = new Date().getTime();
    var result = collectionUnderTest.count()
    duration = new Date().getTime() - start
    stats.insert({"type":"count","pass":i,"duration":duration,"count":result})
  }

  print("Counting with aggregation")
  for(var j = 1; j <= iterations; j++){
    start = new Date().getTime()
    var doc = collectionUnderTest.aggregate([{ $group:{_id: null, count:{ $sum: 1 } } }])
    duration = new Date().getTime() - start
    stats.insert({"type":"aggregation", "pass":j, "duration": duration,"count":doc.count})
  }

  var averages = stats.aggregate([
   {$group:{_id:"$type","average":{"$avg":"$duration"}}} 
  ])

  return averages
}

और वापस आ गया:

{ "_id" : "aggregation", "average" : 43828.8 }
{ "_id" : "count", "average" : 0.6 }

इकाई मिलीसेकंड है।

एचटीएच




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. सरणी के भीतर स्थितियों के आधार पर सरणी से अलग मान प्राप्त करें

  2. मोंगोडब:एक सरणी में नेस्टेड एक जेसन-ऑब्जेक्ट को क्वेरी करें

  3. मोंगोडीबी वसंत डेटा में दो तारों की तुलना कैसे करें?

  4. मोंगो डीबी कनेक्टिविटी से मिर्थ कनेक्ट

  5. होम-ब्रू का उपयोग करके मोंगो को 2.6 में अपग्रेड किया गया और अब कनेक्ट नहीं हो सकता