다음과 같은 컬렉션이 있다고 가정 해 보겠습니다.
{
"_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"의 가격을 높이고 싶지 않은 경우 "items"배열에 추가해야합니다.
2-두 필드를 동시에 업데이트하려면 어떻게해야합니까? 예를 들어, "my_item_three"의 가격을 높이고 동시에 "total"(동일한 값)을 늘리십시오.
MongoDB 쪽에서이 작업을 선호합니다. 그렇지 않으면 클라이언트 쪽 (Python)에 문서를로드하고 업데이트 된 문서를 구성하고 MongoDB의 기존 문서로 바꿔야합니다.
업데이트 객체가 존재 하는 경우 이것이 시도하고 잘 작동합니다 .
db.test_invoice.update({user_id : 123456 , "items.item_name":"my_item_one"} , {$inc: {"items.$.price": 10}})
그러나 키가 존재하지 않으면 아무것도하지 않습니다. 또한 중첩 된 개체 만 업데이트합니다. 이 명령을 사용하여 "전체"필드도 업데이트 할 수있는 방법이 없습니다.