Zaszedłeś zbyt głęboko z tym symbolem wieloznacznym $
. Pasujesz do elementu w Fields
tablicę, więc uzyskasz dostęp do tego za pomocą:Fields.$
. To wyrażenie zwraca pierwsze dopasowanie w Twoich Fields
tablica, dzięki czemu osiągasz jej pola przez Fields.$.Field
lub Fields.$.Result
.
Teraz zaktualizujmy update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Pamiętaj, że skróciłem query
ponieważ jest równy twojej ekspresji.