Asumsikan kita memiliki koleksi berikut, yang saya punya beberapa pertanyaan tentang:
{
"_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 - Saya ingin menaikkan harga untuk "item_name": "my_item_two" dan jika tidak ada , itu harus ditambahkan ke array "items".
2 - Bagaimana saya bisa memperbarui dua bidang sekaligus. Misalnya, naikkan harga untuk "my_item_three" dan pada saat yang sama naikkan "total" (dengan nilai yang sama).
Saya lebih suka melakukan ini di sisi MongoDB, kalau tidak saya harus memuat dokumen di sisi klien (Python) dan membangun dokumen yang diperbarui dan menggantinya dengan yang ada di MongoDB.
UPDATE Ini adalah apa yang saya coba dan berfungsi dengan baik JIKA ADA Objek Ada :
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
Tetapi jika kuncinya tidak ada itu tidak melakukan apa-apa. Juga hanya memperbarui objek bersarang. Tidak ada cara dengan perintah ini untuk memperbarui bidang "total" juga.