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

मिलान करने वाले ऐरे तत्व का चयन करें और चयनित फ़ील्ड लौटाएं

यदि आप लौटने के लिए केवल एक सरणी के कुछ क्षेत्रों का चयन करना चाहते हैं तो आप दस्तावेज़ को "पुनर् आकार देने" के बारे में बात कर रहे हैं। "मूल" फ़ील्ड चयन से परे किसी भी चीज़ के लिए, इसका अर्थ है .aggregate() के बजाय विधि के रूप में .find()

तो यहां दो आवश्यकताएं हैं $filter सरणी सामग्री पर "मिलान" और वापसी, साथ ही साथ $map वास्तविक "फ़ील्ड टू रिटर्न" सरणी से ही:

User.aggregate([
  { "$match": { "children.name": "def" } },
  { "$project": {
     "name": 1,
     "children": {
       "$map": {
         "input": {
           "$filter": {
             "input": "$children",
             "as": "c",
             "cond": { "$eq": [ "$$c.name", "def" ] } 
           }
         },
         "as": "c",
         "in": {
           "age": "$$c.age",
           "height": "$$c.height"
         }
       }
     }
  }}
])

यहां $filter सरणी की सामग्री को केवल शर्त से मेल खाने वाले लोगों तक कम करने के लिए उपयोग किया जाता है। वही होने के नाते जिनके पास समान "name" . है मूल्य के रूप में संपत्ति "def" . इसके बाद इसे "input" . के रूप में पास किया जाता है पैरामीटर के लिए$map

$map ऑपरेटर ठीक वैसे ही काम करता है जैसे यह अन्य भाषा समकक्षों में है कि यह आपके द्वारा "in" में निर्दिष्ट कुछ के अनुसार कुछ वापस करने के लिए "सरणी को दोबारा बदलता है" पैरामीटर। तो यहां हम वास्तव में केवल गुणों को स्पष्ट रूप से नाम देते हैं और वर्तमान सरणी तत्व को संसाधित करने के लिए वहां परिवर्तनीय असाइनमेंट का उपयोग करते हैं ताकि ये "नई" सरणी सामग्री के रूप में वापस आ जाएं।

समग्र परिणाम एक सरणी है, जिसमें शामिल हैं:

  1. बस निर्दिष्ट शर्तों से मेल खाने वाले आइटम।
  2. बस वे फ़ील्ड जिन्हें वापस करने के लिए निर्दिष्ट किया गया था।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में दस्तावेज़ों से केवल एक या दो फ़ील्ड कैसे निकालें?

  2. GraphQL में नेवला आबादी वाले क्षेत्रों को संभालना

  3. MongoDB क्वेरी के लिए अधिकृत नहीं है - कोड 13

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

  5. क्या मोंगोडीबी किसी भी तरह एक कोर तक ही सीमित है?