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

MongoDB:किसी दस्तावेज़ में कुंजियों की संख्या कैसे गिनें?

एकत्रीकरण ढांचे के बावजूद MongoDB 3.6 और नए का उपयोग करते हुए काफी संभव है। $objectToArray का उपयोग करें दस्तावेज़ को एक सरणी में बदलने के लिए एक एकत्रीकरण पाइपलाइन के भीतर ऑपरेटर। वापसी सरणी में मूल दस्तावेज़ में प्रत्येक फ़ील्ड/मान जोड़ी के लिए एक तत्व होता है। रिटर्न ऐरे में प्रत्येक तत्व एक दस्तावेज़ है जिसमें दो फ़ील्ड होते हैं k और v .

दस्तावेज़ को रूट करने का संदर्भ $$ROOT . के माध्यम से संभव बनाया गया है सिस्टम वैरिएबल जो वर्तमान में एग्रीगेशन पाइपलाइन चरण में संसाधित किए जा रहे शीर्ष-स्तरीय दस्तावेज़ का संदर्भ देता है।

सरणी प्राप्त करने पर, आप $addFields . के उपयोग का लाभ उठा सकते हैं एक फ़ील्ड बनाने के लिए पाइपलाइन चरण जो मायने रखता है और वास्तविक गणना $size के उपयोग से प्राप्त की जाती है ऑपरेटर।

यह सब एक ही पाइपलाइन में निम्नलिखित भावों को नेस्ट करके किया जा सकता है:

db.collection.aggregate([
    { "$addFields": {
        "count": {
            "$size": { 
                "$objectToArray": "$$ROOT"
            }
        }
    } }     
])

उदाहरण आउटपुट

{
    "_id" : ObjectId("5a7cd94520a31e44e0e7e282"),
    "a" : 1.0,
    "b" : 1.0,
    "c" : 2.0,
    "z" : 2.0,
    "count" : 5
}

_id को बाहर करने के लिए फ़ील्ड, आप $filter . का उपयोग कर सकते हैं ऑपरेटर के रूप में:

db.collection.aggregate([
    {
        "$addFields": {
            "count": {
                "$size": { 
                    "$filter": {
                        "input": { "$objectToArray": "$$ROOT" },
                        "as": "el",
                        "cond": { "$ne": [ "$$el.k", "_id" ] }
                    }
                }
            }
        }
    }     
])

या 0zkr PM द्वारा सुझाए गए अनुसार बस एक $project जोड़ें शुरुआत में पाइपलाइन चरण:

db.collection.aggregate([
    { "$project": { "_id": 0 } },
    { "$addFields": {
        "count": {
            "$size": { 
                "$objectToArray": "$$ROOT"
            }
        }
    } }     
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में दिनांक को कैसे प्रारूपित करें

  2. मोंगो एकत्रीकरण:गिनती के लिए आपत्ति करने के लिए $ समूह और $ प्रोजेक्ट सरणी

  3. जेसन स्ट्रिंग्स के साथ सी # मोंगो प्रश्न

  4. नेवला में स्कीमा पारित किए बिना एक संग्रह क्वेरी करना

  5. मोंगोडीबी ग्रिडएफएस पूछताछ?