मान लें कि हमारे पास निम्नलिखित संग्रह है, जिसके बारे में मेरे कुछ प्रश्न हैं:
{
"_id" : ObjectId("4faaba123412d654fe83hg876"),
"user_id" : 123456,
"total" : 100,
"items" : [
{
"item_name" : "my_item_one",
"price" : 20
},
{
"item_name" : "my_item_two",
"price" : 50
},
{
"item_name" : "my_item_three",
"price" : 30
}
]
}
1 - मैं "item_name" के लिए मूल्य बढ़ाना चाहता हूं: "my_item_two" और यदि यह मौजूद नहीं है , तो इसे "आइटम" सरणी में जोड़ा जाना चाहिए।
2 - मैं एक ही समय में दो फ़ील्ड कैसे अपडेट कर सकता हूं। उदाहरण के लिए, "my_item_three" के लिए मूल्य बढ़ाएं और उसी समय "कुल" (समान मूल्य के साथ) बढ़ाएं।
मैं इसे MongoDB पक्ष में करना पसंद करता हूं, अन्यथा मुझे क्लाइंट-साइड (Python) में दस्तावेज़ को लोड करना होगा और अद्यतन दस्तावेज़ का निर्माण करना होगा और इसे MongoDB में मौजूदा एक के साथ बदलना होगा।
अद्यतन यह है कि मैं कोशिश की है और ठीक काम करता है अगर वस्तु मौजूद है :
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
लेकिन अगर कुंजी मौजूद नहीं है तो यह कुछ भी नहीं करता है। इसके अलावा यह केवल नेस्टेड ऑब्जेक्ट को अपडेट करता है। इस कमांड के साथ "कुल" फ़ील्ड को अपडेट करने का कोई तरीका नहीं है।