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

MongoDB प्रोजेक्ट ने फाइंडएंडमॉडिफाई क्वेरी में नेस्टेड एरे में रिकॉर्ड अपडेट किया

आप स्थितिगत $ findAndModify() तरीका। ऑपरेटर सरणी में तत्व की स्थिति को स्पष्ट रूप से निर्दिष्ट किए बिना अद्यतन करने के लिए एक सरणी में तत्व की पहचान करेगा। ध्यान दें, सरणी फ़ील्ड क्वेरी दस्तावेज़ के हिस्से के रूप में दिखाई देनी चाहिए और दस्तावेज़ को अद्यतन पर किए गए संशोधनों के साथ वापस करने के लिए, नए विकल्प का उपयोग करें, ताकि आपका अपडेट ऐसा होगा

db.tests.findAndModify({
    query: {
        "arr.cond": 4
    },
    update: {
        "$set": {"arr.$.upd": 55 }
    },
    new : true,
    fields: { "arr": 1, "_id": 0 }   
})

आउटपुट का उत्पादन करेगा:

{
    "arr": [
        {
            "cond" : 1,
            "upd" : 2
        },
        {
            "cond" : 2,
            "upd" : 3
        },
        {
            "cond" : 4,
            "upd" : 55
        },
        {
            "cond" : 6,
            "upd" : 7
        },
        {
            "cond" : 8,
            "upd" : 9
        }
    ]
}

चूंकि आप अपडेट किए गए दस्तावेज़ को प्रोजेक्शन के साथ वापस करना चाहते हैं $ प्रक्षेपण ऑपरेटर का उपयोग केवल find() . के प्रोजेक्शन दस्तावेज़ में किया जा सकता है विधि या findOne() विधि इसलिए findAndModify() का फ़ील्ड विकल्प $ प्रक्षेपण ऑपरेटर।

मूल जावास्क्रिप्ट का उपयोग करने के लिए एक समाधान होगा फ़िल्टर ()

. के रूप में लौटाए गए एआर फ़ील्ड पर विधि
var result = db.tests.findAndModify({
    query: {
        "arr.cond": 4
    },
    update: {
        "$set": {"arr.$.upd": 55 }
    },
    new : true,
    fields: { "arr": 1, "_id": 0 }   
})

var updated = []
if (result && result.arr) updated = result.arr.filter(function (item) { return item.cond == 4; });
printjson(updated);

यह प्रिंट होगा

[ { "cond" : 4, "upd" : 55 } ]

-- अपडेट करें --

या $elemMatch प्रक्षेपण जैसा कि आपने नीचे टिप्पणी में सुझाया है:

var result = db.tests.findAndModify({
    query: {
        "arr.cond": 4
    },
    update: {
        "$set": {"arr.$.upd": 55 }
    },
    new : true,
    fields: {"arr": {"$elemMatch": { "cond": 4 } }, "_id": 0 }   
})

printjson(result);

आउटपुट :

{ "arr" : [ { "cond" : 4, "upd" : 55 } ] }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब सरणी मिलान

  2. नेवला का उपयोग करके MongoDB में बल्क इंसर्ट

  3. उल्का के माध्यम से एक सरणी से एक प्रविष्टि खींचो

  4. पाइमोंगो में पूर्ण पाठ खोज

  5. स्प्रिंग डेटा में मोंगो एकत्रीकरण क्वेरी कैसे करें?