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

MongoDB में एकल संग्रह में दस्तावेज़ों के बीच सेट के चौराहे को कैसे खोजें?

एकत्रीकरण ढांचे का उपयोग करें वांछित परिणाम प्राप्त करने के लिए। एकत्रीकरण सेट ऑपरेटर यह जादू करेगा $setIntersection

निम्नलिखित एकत्रीकरण पाइपलाइन वह हासिल करती है जो आप चाहते हैं:

db.test.aggregate([
    {
        "$match": {
            "_id": { "$in": [1, 3] }
        }
    },
    {
        "$group": {
            "_id": 0,
            "set1": { "$first": "$set" },
            "set2": { "$last": "$set" }
        }
    },
    {
        "$project": { 
            "set1": 1, 
            "set2": 1, 
            "commonToBoth": { "$setIntersection": [ "$set1", "$set2" ] }, 
            "_id": 0 
        }
    }
])

आउटपुट :

/* 0 */
{
    "result" : [ 
        {
            "set1" : [1,2,3,4,5],
            "set2" : [1,2,5,10,22],
            "commonToBoth" : [1,2,5]
        }
    ],
    "ok" : 1
}

अपडेट करें

तीन या अधिक दस्तावेज़ों को प्रतिच्छेद करने के लिए, आपको $reduce . की आवश्यकता होगी सरणियों को समतल करने के लिए ऑपरेटर। यह आपको किसी भी संख्या में सरणियों को प्रतिच्छेद करने की अनुमति देगा, इसलिए डॉक्स 1 और 3 से केवल दो सरणियों का प्रतिच्छेदन करने के बजाय, यह कई सरणियों पर भी लागू होगा।

निम्नलिखित समग्र संचालन चलाने पर विचार करें:

db.test.aggregate([
    { "$match": { "_id": { "$in": [1, 3] } } },
    {
        "$group": {
            "_id": 0,
            "sets": { "$push": "$set" },
            "initialSet": { "$first": "$set" }
        }
    },
    {
        "$project": {
            "commonSets": {
                "$reduce": {
                    "input": "$sets",
                    "initialValue": "$initialSet",
                    "in": { "$setIntersection": ["$$value", "$$this"] }
                }
            }
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में क्वेरी प्लान से इंडेक्स छिपाने के 3 तरीके

  2. Mongodb PHP - दशमलव के साथ पूर्णांक

  3. MongoDB.Driver.Builders कैसे समूहित करें और औसत प्राप्त करें

  4. एक क्लस्टर में MongoDB चलाने के लिए सर्वोत्तम अभ्यास

  5. क्या मोंगोडीबी का मूल आरईएसटी इंटरफ़ेस है?