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.