Anda terlalu dalam dengan karakter pengganti $
. Anda cocok untuk item di Fields
array, sehingga Anda mendapatkan akses itu, dengan:Fields.$
. Ekspresi ini mengembalikan kecocokan pertama di Fields
Anda array, sehingga Anda mencapai bidangnya dengan Fields.$.Field
atau Fields.$.Result
.
Sekarang, mari perbarui update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Harap perhatikan bahwa saya telah mempersingkat query
karena itu sama dengan ekspresi Anda.