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

गोलंग में मोंगोडीबी में एकाधिक विशेषता मानों की जांच करके आइटम सूची पुनर्प्राप्त करें

आपको एकत्रीकरण ढांचे का उपयोग करने की आवश्यकता होगी जहां आप एक एकत्रीकरण पाइपलाइन चलाएंगे जो पहले संग्रह में दस्तावेज़ों को स्थान सूची के आधार पर फ़िल्टर करती है $match<का उपयोग करने वाले आईडी /कोड> ऑपरेटर।

दूसरी पाइपलाइन में स्थान सूची . को समतल करना होगा और योग दस्तावेजों में डेटा के लिए उप-दस्तावेज़ सरणियों को पाइपलाइन के नीचे डीनॉर्मलाइज़्ड प्रविष्टियों के रूप में संसाधित किया जाना है। $unwind ऑपरेटर यहां उपयोगी है।

$match का उपयोग करके एक और फ़िल्टर खोलने के बाद आवश्यक है ताकि अगली पाइपलाइन में केवल उन दस्तावेज़ों की अनुमति दी जाए जिन्हें आप एकत्र करना चाहते हैं।

मुख्य पाइपलाइन होगी $समूह संचायक ऑपरेटर $sum . वांछित परिणाम के लिए, आपको $cond स्वतंत्र गणना फ़ील्ड बनाने के लिए क्योंकि यह $sum नाम मान के आधार पर अभिव्यक्ति।

इसे पूरी तरह से रखते हुए, निम्न पाइपलाइन चलाने पर विचार करें:

db.collection.aggregate([
    { "$match": { "venueList.id": { "$in": ["VID1212", "VID4343"] } } },
    { "$unwind": "$venueList" },
    { "$match": { "venueList.id": { "$in": ["VID1212", "VID4343"] } } },
    { "$unwind": "$venueList.sum" },    
    {
        "$group": {
            "_id": null,
            "linux": {
                "$sum": {
                    "$cond": [ 
                        { "$eq": [ "$venueList.sum.name", "linux" ] }, 
                        "$venueList.sum.value", 0 
                    ]
                }
            },
            "ubuntu": {
                "$sum": {
                    "$cond": [ 
                        { "$eq": [ "$venueList.sum.name", "ubuntu" ] }, 
                        "$venueList.sum.value", 0 
                    ]
                }
            }
        }
    }
])

mGo के साथ उपयोग के लिए, आप http में दिए गए मार्गदर्शन का उपयोग करके उपरोक्त पाइपलाइन को रूपांतरित कर सकते हैं://godoc.org/labix.org/v2/mgo#Collection.Pipe

अधिक लचीले और बेहतर प्रदर्शन करने वाले विकल्प के लिए जो उपरोक्त की तुलना में बहुत तेजी से निष्पादित होता है, और योग सूची के लिए अज्ञात मानों को भी ध्यान में रखता है, वैकल्पिक पाइपलाइन को निम्नानुसार चलाएं

db.collection.aggregate([
    { "$match": { "venueList.id": { "$in": ["VID1212", "VID4343"] } } },
    { "$unwind": "$venueList" },
    { "$match": { "venueList.id": { "$in": ["VID1212", "VID4343"] } } },
    { "$unwind": "$venueList.sum" },    
    { 
        "$group": {
            "_id": "$venueList.sum.name",
            "count": { "$sum": "$venueList.sum.value" }
        }
    },
    { 
        "$group": {
            "_id": null,
            "counts": {
                "$push": {
                    "name": "$_id",
                    "count": "$count"
                }
            }
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कुल मिलाकर समूह कैसे करें लेकिन मोंगो का उपयोग करके अन्य फ़ील्ड भी दिखाएं?

  2. कैसे (ठीक से) कुबेरनेट्स पर मोंगोडीबी को तैनात करें और इसे किसी अन्य पॉड/नौकरी से एक्सेस करें?

  3. MongoDB:उपयोगकर्ताओं को टिप्पणियों में एम्बेड करें

  4. एकल (प्राथमिक नोड केवल) प्रतिकृति सेट (विकास के लिए) के लिए डोकर मोंगो?

  5. MongoDb पिछले से पहली घटना पर एक सरणी में अद्यतन वस्तु