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

MongoDB में उप सरणियों को कैसे खोजें

अगर आप केवल एक want चाहते हैं फ़ील्ड तो MongoDB में "dot notation" है। नेस्टेड तत्वों तक पहुँचने के लिए:

db.collection.find({ "to.email": "[email protected]" })

और यह मेल खाने वाले दस्तावेज़ लौटाएगा:

अधिक के लिए उस एक फ़ील्ड को एक शर्त के रूप में, $elemMatch . का उपयोग करें ऑपरेटर

db.collection.find(
    { "to": { 
        "$elemMatch": { 
            "email": "[email protected]",
            "name": "domains",
        }
    }}
)

और आप एक एकल . को "प्रोजेक्ट" कर सकते हैं उस तत्व को वापस करने के लिए मिलान करें:

db.collection.find({ "to.email": "[email protected]" },{ "to.$": 1 })

लेकिन अगर आप अधिक की अपेक्षा करते हैं एक . से अधिक मिलान करने के लिए तत्व, फिर आप एकत्रीकरण ढांचे का उपयोग करते हैं:

db.collection.aggregate([
    // Matches the "documents" that contain this
    { "$match": { "to.email": "[email protected]" } },

    // De-normalizes the array
    { "$unwind": "$to" },

    // Matches only those elements that match
    { "$match": { "to.email": "[email protected]" } },

    // Maybe even group back to a singular document
    { "$group": {
        "_id": "$_id",
        "from_name": { "$first": "$name" },
        "to": { "$push": "$to" },
        "subject": { "$first": "$subject" }            
    }}

])

यदि आवश्यक हो तो मैचों के लिए किसी सरणी की सामग्री से मिलान करने और/या "फ़िल्टर" करने के सभी मज़ेदार तरीके।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB डेटाबेस एन्क्रिप्शन

  2. आबादी वाले क्षेत्र के अनुसार नेवला छाँटें

  3. अंतिम पुश () एम्बेडेड दस्तावेज़ कैसे वापस करें

  4. स्प्रिंग डेटा मोंगो - विशिष्ट प्रदर्शन करें, लेकिन परिणामों में एम्बेडेड दस्तावेज़ों को खींचना नहीं चाहता

  5. mongoDB updateMany upsert true के साथ और $in जहां स्थिति में