ধরে নিন আমাদের নীচের সংগ্রহ রয়েছে, যা সম্পর্কে আমার কয়েকটি প্রশ্ন রয়েছে:
{
"_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 - আমি "আইটেম_নাম": "মাই_াইটেম_টিউ" এর দাম বাড়িয়ে দিতে চাই এবং যদি এটি বিদ্যমান না থাকে তবে এটি "আইটেম" অ্যারেতে যুক্ত করা উচিত।
2 - আমি একই সাথে দুটি ক্ষেত্র আপডেট করতে পারি। উদাহরণস্বরূপ, "my_item_three" এর দাম বাড়ান এবং একই সাথে "মোট" (একই মান সহ) বৃদ্ধি করুন।
আমি মঙ্গোডিবি সাইডে এটি করতে পছন্দ করি, অন্যথায় আমাকে ক্লায়েন্ট-সাইড (পাইথন) এ নথিটি লোড করতে হবে এবং আপডেট নথিটি তৈরি করতে হবে এবং এটি মঙ্গোডিবিতে বিদ্যমান একটিতে প্রতিস্থাপন করতে হবে।
হালনাগাদ করুন আমি যা চেষ্টা করেছি এবং যদি কাজটি অবজায় থাকে তবে তা কাজ করে :
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
তবে কীটি উপস্থিত না থাকলে এটি কিছুই করে না। এছাড়াও এটি কেবল নেস্টেড অবজেক্টটিকে আপডেট করে। এই আদেশটি দিয়ে "মোট" ক্ষেত্রটিও আপডেট করার উপায় নেই।