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

Mongodb सबएरे से विशिष्ट तत्व को अपडेट करता है

आपके कोड में समस्या है dot-notation क्योंकि जब आप डॉट नोटेशन निर्दिष्ट करते हैं तो आप मानते हैं कि निर्दिष्ट फ़िल्टर मानदंड एकल सरणी तत्व से मेल खाना चाहिए जो सभी मानदंडों को पूरा करता है। लेकिन यह नहीं है। यदि कोई एकल मानदंड मेल खाता है, तो सरणियों पर डॉट नोटेशन किसी भी सरणी तत्व को पिक कर सकता है। इसलिए आपको अप्रत्याशित अपडेट मिल रहा है।

आपको $elemMatch का उपयोग करना होगा array . के सभी फ़िल्टर का मिलान करने के लिए तत्व।

db.coll.update({
'_id' : 28,
n: { 
   $elemMatch:{
       a : new ObjectId('4ef85a3e46b3b84408000000'),
       c : 28 }
   }
},
{
  $push : {
     'n.$.p' : ObjectId("4b97e62bf1d8c7152c9ccb74")
  },
  $set : {
     'n.$.t' : ISODate("2013-05-13T14:22:46.777Z")
  }
})

और आउटपुट है

    {
        "a" : ObjectId("4ef85a3e46b3b84408000000"),
        "c" : 28,
        "p" : [
            ObjectId("4f00631046b3b85002000000"),
            ObjectId("4b97e62bf1d8c7152c9ccb74")
        ],
        "t" : ISODate("2013-05-13T14:22:46.777Z"),
        "u" : 26
    }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 2 मोंगोडब संग्रह की तुलना कैसे करें?

  2. एक फ़ील्ड नाम क्लासनाम मॉर्फिया द्वारा मोंगोडब में डाला जा रहा है

  3. ग्रुप काउंट 2 आइटम ऑब्जेक्ट ऐरे मोंगोडब

  4. मैं OpenShift से जावा का उपयोग करके MongoDB सर्वर से कैसे जुड़ सकता हूं?

  5. मौजूदा ग्रिडफ़्स फ़ाइल में डेटा जोड़ें