Du gick för djupt med det jokertecknet $
. Du matchar för ett objekt i Fields
array, så du får tillgång till det, med:Fields.$
. Detta uttryck returnerar den första matchningen i dina Fields
array, så att du når dess fält med Fields.$.Field
eller Fields.$.Result
.
Låt oss nu uppdatera update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Observera att jag har förkortat query
eftersom det är lika med ditt uttryck.