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

MongoDB नेस्टेड सरणी क्वेरी

कुछ प्रश्नों को चलाने के बाद, मैं इस निष्कर्ष पर पहुंचा कि $in सरणियों की एक सरणी के लिए काम नहीं करता है

आप $elemMatch . का उपयोग कर सकते हैं इसके बजाय और यह काम करेगा, लेकिन यह निराशाजनक है कि MongoDB के दस्तावेज़ इसके बारे में चेतावनी नहीं देते हैं।

मैंने यह दस्तावेज़ बनाया है:

{
      "_id": "51cb12857124a215940cf2d4",
      "level1": [
        [
          "item00",
          "item01"
        ],
        [
          "item10",
          "item11"
        ]
      ],
      "items": [
        "item20",
        "item21"
      ]
}

ध्यान दें कि फ़ील्ड "आइटम" स्ट्रिंग्स की एक सरणी है और यह क्वेरी पूरी तरह से काम करती है:

db.nested.findOne({"items":{"$in":["item20"]} })

अब, "स्तर 1.0" भी तारों की एक सरणी है, केवल अंतर यह है कि यह किसी अन्य सरणी के अंदर है। यह प्रश्न काम करना चाहिए लेकिन नहीं है:

db.nested.findOne({"level1.0":{"$in":["item00"]} })

परिणाम प्राप्त करने का एकमात्र तरीका $elemMatch का उपयोग करना है:

db.nested.findOne({"level1":{"$elemMatch":{"$in":['item00']}} })

तो $elemMatch समस्या को हल करता है, लेकिन वास्तविक समाधान यह है कि मोंगोडीबी के दस्तावेज़ों को यह बताने के लिए अद्यतन किया जाए कि $in सरणियों के सरणियों के लिए काम नहीं करता है। शायद आपको 10gen को एक अनुरोध सबमिट करना चाहिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डेटाबेस में संग्रह की संख्या की सीमा

  2. मोंगोडब में स्ट्रिंग की लंबाई का चयन करें

  3. ग्लासफ़िश में तृतीय पक्ष पुस्तकालयों का उपयोग कैसे करें?

  4. MongoDB $toDecimal

  5. स्प्रिंग डेटा MongoDB में GridFS