Sau một số nghiên cứu thêm, có vẻ như cách duy nhất để sửa đổi mảng trong một mảng là với một số logic bên ngoài để tìm chỉ mục của phần tử tôi muốn thay đổi. Thực hiện điều này sẽ yêu cầu mọi thay đổi phải có truy vấn tìm để xác định chỉ mục và sau đó là truy vấn cập nhật để sửa đổi mảng. Đây có vẻ không phải là cách tốt nhất.
Liên kết đến một trường hợp JIRA 2010 yêu cầu nhiều phần tử vị trí ...
Vì tôi sẽ luôn biết ID của đối tượng địa lý, tôi đã chọn sửa đổi cấu trúc tài liệu của mình.
{
"_id" : "v5y8nggzpja5Pa7YS",
"name" : "Example",
"display_name" : "EX1",
"groups" : [
{
"_id" : "s86CbNBdqJnQ5NWaB",
"name" : "Group1",
"display_name" : "G1",
"features" : {
"1" : {
type : "blog",
name : "[blog name]"
owner_id : "ga5YgvP5yza7pj8nS"
},
}
},
]
},
Với cấu trúc mới, các thay đổi có thể được thực hiện theo cách sau:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});