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

मोंगोडब:शर्त पूरी होने पर तत्व को नेस्टेड सरणी में धकेलें

यहाँ समस्या यह है कि आप कुछ चीजों को गलत समझ रहे हैं।

जब आप "outerArray.field.innerArray": { $in: [ 1, 3 ] } आपकी क्वेरी में, आपको केवल innerArray नहीं मिल रहा है जहाँ 1 या 3 है। आपको दस्तावेज़ मिल रहे हैं जहाँ ये सरणियाँ मौजूद हैं।

तो आप पूरे दस्तावेज़ को क्वेरी कर रहे हैं।

आपको arrayFilter का उपयोग करना होगा फ़िल्टर मिलान होने पर मानों को अपडेट करने के लिए।

इसलिए, अगर मैं आपको सही ढंग से समझ पाया हूं, तो आप जो प्रश्न चाहते हैं वह है:

db.collection.update(
{}, //Empty object to find all documents
{
  $push: { "outerArray.$[elem].field.innerArray": 4 }
},
{
  "arrayFilters": [ { "elem.field.innerArray": { $in: [ 1, 3 ] } } ]
})

उदाहरण यहां

ध्यान दें कि पहला ऑब्जेक्ट update . में कैसे है खाली है। आपको दस्तावेज़ से मेल खाने के लिए फ़ील्ड रखना होगा (सरणी नहीं, दस्तावेज़)।

यदि आप केवल एक दस्तावेज़ को अपडेट करना चाहते हैं तो आपको पहले ऑब्जेक्ट (क्वेरी ऑब्जेक्ट) को अपने इच्छित मानों से भरना होगा, उदाहरण के लिए:{"_id": 11}




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PyMongo का उपयोग करके स्व-हस्ताक्षरित एसएसएल कनेक्शन

  2. फ्लास्क में फॉर्म POST ऑब्जेक्ट को मोंगोडब के लिए उपयुक्त प्रतिनिधित्व में परिवर्तित करें

  3. क्या ग्रिडएफएस उत्पादन के लिए पर्याप्त तेज और विश्वसनीय है?

  4. MongoDB बनाम CouchDB (गति अनुकूलन)

  5. Node.js . का उपयोग करके MongoDB से कनेक्ट करने का सबसे अच्छा तरीका