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

एक ही दस्तावेज़ में दो सेटों के प्रतिच्छेदन का पता लगाने के लिए MongoDB एकत्रीकरण का उपयोग करें

आप एकत्रीकरण ढांचे के साथ पूर्ण समाधान से बहुत दूर नहीं थे - $group से पहले आपको एक और चीज़ की आवश्यकता थी कदम और वह कुछ ऐसा है जो आपको यह देखने की अनुमति देगा कि क्या उपयोग की जा रही सभी चीजें किसी स्वामित्व वाली चीज़ से मेल खाती हैं।

ये है पूरी पाइपलाइन

> db.house.aggregate(
       {'$unwind':'$uses'}, 
       {'$unwind':'$rooms'}, 
       {'$unwind':'$rooms.owns'}, 
       {$project:  { _id:0, 
                     houseId:1, 
                     uses:"$uses.name", 
                     isOkay:{$cond:[{$eq:["$uses.name","$rooms.owns.name"]}, 1, 0]}
                   }
       }, 
       {$group: { _id:{house:"$houseId",item:"$uses"}, 
                  hasWhatHeUses:{$sum:"$isOkay"}
                }
       },
       {$match:{hasWhatHeUses:0}})

और आपके दस्तावेज़ पर इसका आउटपुट

{
    "result" : [
        {
            "_id" : {
                "house" : 123,
                "item" : "sofa"
            },
            "hasWhatHeUses" : 0
        }
    ],
    "ok" : 1
}

स्पष्टीकरण - एक बार जब आप दोनों सरणियों को खोल देते हैं तो अब आप उन तत्वों को फ़्लैग करना चाहते हैं जहाँ उपयोग की गई वस्तु स्वामित्व वाली वस्तु के बराबर है और उन्हें एक गैर-0 "स्कोर" दें। अब जब आप चीजों को houseId द्वारा फिर से समूहित करते हैं तो आप जांच सकते हैं कि क्या किसी भी इस्तेमाल की गई वस्तु का मिलान नहीं हुआ है। स्कोर के लिए 1 और 0 का उपयोग करने से आप योग कर सकते हैं और अब आइटम के लिए एक मैच जिसमें योग 0 है इसका मतलब है कि इसका उपयोग किया गया था लेकिन "स्वामित्व" में कुछ भी मेल नहीं खाता था। आशा है आपको यह पसंद आया होगा!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongooseError:कनेक्ट होने के दौरान आप कई बार `mongoose.connect ()` नहीं कर सकते हैं

  2. रेल 4 और मोंगोइड:प्रोग्रामेटिक रूप से एकाधिक और और या शर्तों के साथ एक क्वेरी बनाएं

  3. नेवला _doc ऑब्जेक्ट के अंदर डेटा लौटाता है

  4. नोड.जेएस में मॉकिंग डेटाबेस?

  5. नीला फ़ंक्शन (नोड) मोंगोडब को कॉल करना त्रुटि के बिना समाप्त होता है लेकिन क्वेरी से कुछ भी वापस नहीं आता है