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

MongoDB संग्रह में ऑब्जेक्ट सरणी में केवल पूछे गए तत्व को पुनः प्राप्त करें

MongoDB 2.2 का नया $elemMatch प्रोजेक्शन ऑपरेटर केवल पहले . को शामिल करने के लिए लौटाए गए दस्तावेज़ को बदलने का एक और तरीका प्रदान करता है मिलान shapes तत्व:

db.test.find(
    {"shapes.color": "red"}, 
    {_id: 0, shapes: {$elemMatch: {color: "red"}}});

रिटर्न:

{"shapes" : [{"shape": "circle", "color": "red"}]}

2.2 में आप $ projection operator . का उपयोग करके भी ऐसा कर सकते हैं , जहां $ प्रोजेक्शन ऑब्जेक्ट में फ़ील्ड नाम क्वेरी से फ़ील्ड के पहले मेल खाने वाले सरणी तत्व की अनुक्रमणिका का प्रतिनिधित्व करता है। निम्नलिखित उपरोक्त के समान परिणाम देता है:

db.test.find({"shapes.color": "red"}, {_id: 0, 'shapes.$': 1});

MongoDB 3.2 अपडेट

3.2 रिलीज से शुरू करके, आप नए $filter . का उपयोग कर सकते हैं प्रोजेक्शन के दौरान ऐरे को फ़िल्टर करने के लिए एग्रीगेशन ऑपरेटर, जिसमें सभी . को शामिल करने का फ़ायदा होता है केवल पहले वाले के बजाय मेल खाता है।

db.test.aggregate([
    // Get just the docs that contain a shapes element where color is 'red'
    {$match: {'shapes.color': 'red'}},
    {$project: {
        shapes: {$filter: {
            input: '$shapes',
            as: 'shape',
            cond: {$eq: ['$$shape.color', 'red']}
        }},
        _id: 0
    }}
])

परिणाम:

[ 
    {
        "shapes" : [ 
            {
                "shape" : "circle",
                "color" : "red"
            }
        ]
    }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB / उल्का / तैनात अनुप्रयोगों के लिए MONGO_URL निर्यात करें

  2. मोंगो में दिनांक के साथ दस्तावेज़ कैसे सम्मिलित करें?

  3. MongoDB 'गिनती ()' बहुत धीमी है। हम इसके साथ कैसे परिशोधित/काम करते हैं?

  4. MongoDB में arrayFilters पैरामीटर कैसे काम करता है

  5. Mongoose/MongoDB परिणाम फ़ील्ड जावास्क्रिप्ट में अपरिभाषित दिखाई देते हैं