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

नेवला:समुच्चय का उपयोग कैसे करें और एक साथ कैसे खोजें

MongoDB 3.6 और उच्चतर के लिए, $expr ऑपरेटर जो क्वेरी भाषा के भीतर एकत्रीकरण अभिव्यक्तियों के उपयोग की अनुमति देता है:

var followers_count = 30;
db.locations.find({
   "$expr": { 
       "$and": [
           { "$eq": ["$name", "development"] },
           { "$gte": [{ "$size": "$followers" }, followers_count ]}
       ]
    }
});

गैर-संगत संस्करणों के लिए, आप $match और $redact आपके संग्रह को क्वेरी करने के लिए पाइपलाइन। उदाहरण के लिए, यदि आप locations के बारे में पूछना चाहते हैं संग्रह जहां नाम 'विकास' और followers_count . है 30 से अधिक है, निम्नलिखित समग्र संचालन चलाएँ:

const followers_count = 30;
Locations.aggregate([
    { "$match": { "name": "development" } },
    {
        "$redact": {
            "$cond": [
                { "$gte": [ { "$size": "$followers" }, followers_count ] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
]).exec((err, locations) => {
    if (err) throw err;
    console.log(locations);
})

या एक ही पाइपलाइन के भीतर

. के रूप में
Locations.aggregate([
    {
        "$redact": {
            "$cond": [
                { 
                    "$and": [
                        { "$eq": ["$name", "development"] },
                        { "$gte": [ { "$size": "$followers" }, followers_count ] }
                     ]
                },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    }
]).exec((err, locations) => {
    if (err) throw err;
    console.log(locations);
})

उपरोक्त स्थानों को केवल _id . के साथ लौटाएगा उपयोगकर्ताओं से संदर्भ। फॉलोअर्स सरणी को "पॉप्युलेट" करने के साधन के रूप में उपयोगकर्ताओं के दस्तावेज़ों को वापस करने के लिए, आप $lookup पाइपलाइन।

यदि अंतर्निहित मोंगो सर्वर संस्करण 3.4 और नया है, तो आप पाइपलाइन को इस रूप में चला सकते हैं

let followers_count = 30;
Locations.aggregate([
    { "$match": { "name": "development" } },
    {
        "$redact": {
            "$cond": [
                { "$gte": [ { "$size": "$followers" }, followers_count ] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    },
    {
        "$lookup": {
            "from": "users",
            "localField": "followers",
            "foreignField": "_id",
            "as": "followers"
        }
    }
]).exec((err, locations) => {
    if (err) throw err;
    console.log(locations);
})

अन्यथा आपको $unwind $lookup और फिर $group उसके बाद पाइपलाइन:

let followers_count = 30;
Locations.aggregate([
    { "$match": { "name": "development" } },
    {
        "$redact": {
            "$cond": [
                { "$gte": [ { "$size": "$followers" }, followers_count ] },
                "$$KEEP",
                "$$PRUNE"
            ]
        }
    },
    { "$unwind": "$followers" },
    {
        "$lookup": {
            "from": "users",
            "localField": "followers",
            "foreignField": "_id",
            "as": "follower"
        }
    },
    { "$unwind": "$follower" },
    {
        "$group": {
            "_id": "$_id",
            "created": { "$first": "$created" },
            "name": { "$first": "$name" },
            "followers": { "$push": "$follower" }
        }
    }
]).exec((err, locations) => {
    if (err) throw err;
    console.log(locations);
})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongo डेटाबेस url में authSource का क्या अर्थ है?

  2. मैं नेस्टेड दस्तावेज़ों में अधिकतम मूल्य कैसे प्राप्त कर सकता हूं?

  3. कॉच डीबी बनाम मोंगोडीबी (स्मृति उपयोग)

  4. अंतिम सरणी प्रविष्टि फ़ील्ड मान द्वारा परिणाम फ़िल्टर करें

  5. मोंगोडीबी $bsonSize