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

MongoDB एकाधिक उप-दस्तावेज़ों को अद्यतन या क्वेरी के साथ अद्यतन करता है

आपको यह त्रुटि मिली है

आपकी दूसरी क्वेरी एकाधिक उप-दस्तावेज़ . से मेल खाने के कारण . वर्तमान में स्थितीय ऑपरेटर . का उपयोग करना संभव नहीं है पोजिशनल ऑपरेटर का उपयोग करके एक सरणी में सभी आइटम्स को अपडेट करने के लिए।

इसलिए अपनी समस्या का समाधान करने के लिए आप इस प्रक्रिया का पालन कर सकते हैं

  1. _id का उपयोग करके दस्तावेज़ ढूंढें और $elemMatch का उपयोग करके उप दस्तावेज़ ढूंढें और फिर

  2. प्रत्येक उप दस्तावेज़ को अपडेट करें और दस्तावेज़ को फिर से सहेजें

इस तरह कोशिश कर सकते हैं:

db.deduplications.find(  
{ $or: [ {
         "_id": ObjectId("583fc558668bde730a460e11") , 
        "DeviceVersionPairs":{
            $elemMatch:{ "DeviceId": ObjectId("5822d0606bfdcd6ec407d9b9") , 
            "CloudFolderId": ObjectId("5823110e6bfdd46ec4357582") ,
            "DeviceVersionPairs.CloudFileId": ObjectId("582311168cd396223499942a") ,
            "DeviceVersionPairs.VersionId": ObjectId("582311168cd396223499942b") }}
    } ,   
    { 
        "_id": ObjectId("583fc558668bde730a460e11") , 
        "DeviceVersionPairs":{
            $elemMatch:{ "DeviceId": ObjectId("56dfe1356caaea14a819f1e4") , 
            "CloudFolderId": ObjectId("583fb4bc6e7f341874f13bfc") , 
            "CloudFileId": ObjectId("583fb539e015b8a53fb71872") , 
            "VersionId": ObjectId("583fb4ca6e7f331874213584") }}
    } ] 
}).forEach(function (doc) {
    doc.DeviceVersionPairs.forEach(function (device) {
      device.status = 'passive';
    });
    db.deduplications.save(doc);
 });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग डेटा मोंगो एक्सएमएल विन्यास में मेजबान की अनदेखी करने लगता है

  2. MongoDB शेयर और असंतुलित एकत्रीकरण भार

  3. MongoDB कई-से-अनेक एसोसिएशन

  4. मोंगोइड - विशिष्ट क्वेरी पर सीमा

  5. मोंगोडीबी:किसी सरणी में किसी दिए गए मान के साथ कितने आइटम मौजूद हैं, यह एक दस्तावेज़ में है?