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

MongoDB- सटीक सरणी तत्व ला रहा है, दूसरों को छोड़कर

यह MongoDB के साथ एक मानक और समझने योग्य सरणी की गलत धारणा है। क्वेरी मानदंड दस्तावेज़ . के दायरे में उचित परिणाम देगा , जरूरी नहीं बस एक सरणी में आइटम जिसे आप ढूंढ रहे हैं। दूसरे शब्दों में, DATA NOT FOUND . खोजने का आपका वांछित लक्ष्य दिया गया है , सबसे सरल प्रश्नों में कोई भी दस्तावेज़ मिलेगा जहां सरणी में कम से कम एक आइटम मेल खाता है - लेकिन उन लोगों को फ़िल्टर नहीं करेगा जो नहीं करते हैं। इसे एक बार में करने के लिए आपको थोड़ा और जटिल होना होगा:

db.foo.aggregate([
// Make sure at *least* one label has a remark of DATA NOT FOUND;
// otherwise, the $filter trick in the next stage yields a labels array
// of length 0 (which is not horrible).  Also, this is a good place to
// add other $match criteria, possibly index-optimized, to shrink down the
// size of response set:
{$match: {"divisionIn.sections.labels.remarks":"DATA NOT FOUND"}}

,{$project: {
        // Copy over the main doc level things we want:
        projectDR: "$projectDR",
        code: "$code",
        status: "$status"

        // divisionIn is a map, not an array, so we can dive down using dot notation
        // and make a new sections array called divSections that will ONLY have
        // DATA NOT FOUND: 
        divSections: {$map: {input: "$divisionIn.sections", as:"z", in:
            {
                // Again, copy over things we want to keep; may not need all of them
                "sectionNumber": "$$z.sectionNumber",
                "sectionName": "$$z.sectionName",

                // The Juice: Copy BUT FILTER the labels field conditionally based on
                // the value of labels.remarks:
                "labels": {$filter: {input: "$$z.labels",
                             as: "z2",
                             cond: {$eq: [ "$$z2.remarks", "DATA NOT FOUND"] }
                    }}
            }
            }}
    }}

                       ]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला में नेस्टेड वस्तु अद्यतन कर रहा है

  2. नेवला एक ढूंढता है और दस्तावेज़ों की सरणी में धकेलता है

  3. एक नेवला दस्तावेज़ के अंदर एक सरणी को क्वेरी करना

  4. स्व-हस्ताक्षरित प्रमाण पत्र के साथ मोंगो यूआरआई

  5. मोंगोडब - क्या विश्वसनीयता के मुद्दे अभी भी महत्वपूर्ण हैं?