आपकी समस्या के विवरण के अनुसार यहाँ:
For example I want to change the quantity of the item 10 in Invoice 123456789.
मैंने अभी-अभी Quantity
में बदलाव किया है से 3. आप यहां अपनी इच्छानुसार कोई भी कार्य कर सकते हैं। आपको बस इस बात पर ध्यान देना होगा कि मैंने arrayFilters
. का उपयोग कैसे किया? यहां।
इस क्वेरी को आजमाएं:
db.collection.update(
{"_id" : "12345678"},
{$set:{"Invoices.$[element1].Items.$[element2].Quantity":3}},
{multi:true, arrayFilters:[ {"element1._id": "123456789"},{
"element2.Item": { $eq: 10 }} ]}
)
उपरोक्त क्वेरी को मोंगो शेल (मोंगो 3.6.3) से सफलतापूर्वक निष्पादित किया गया। और मुझे यह परिणाम दिखाई दे रहा है:
/* 1 */
{
"_id" : "12345678",
"Invoices" : [
{
"_id" : "123456789",
"Currency" : "EUR",
"DueTotalAmountInvoice" : 768.37,
"InvoiceDate" : "2016-01-01 00:00:00.000",
"Items" : [
{
"Item" : 10,
"ProductCode" : "ABC567",
"Quantity" : 3.0
},
{
"Item" : 20,
"ProductCode" : "CDE987",
"Quantity" : 1
}
]
},
{
"_id" : "87654321",
"Currency" : "EUR",
"DueTotalAmountInvoice" : 768.37,
"InvoiceDate" : "2016-01-01 00:00:00.000",
"Items" : [
{
"Item" : 30,
"ProductCode" : "PLO987",
"Quantity" : 1,
"Units" : "KM3"
},
{
"Item" : 40,
"ProductCode" : "PLS567",
"Quantity" : 1,
"DueTotalAmountInvoice" : 768.37
}
]
}
]
}
क्या आप यही चाहते थे?