Bạn đã đi quá sâu với ký tự đại diện $
đó . Bạn khớp với một mục trong Fields
mảng, vì vậy bạn có quyền truy cập vào đó, với:Fields.$
. Biểu thức này trả về kết quả phù hợp đầu tiên trong Fields
của bạn mảng, vì vậy bạn đến các trường của nó theo Fields.$.Field
hoặc các trường Fields.$.Result
.
Bây giờ, hãy cập nhật update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Xin lưu ý rằng tôi đã rút ngắn query
vì nó bằng với biểu thức của bạn.