Je bent te diep gegaan met dat jokerteken $ . Je komt overeen voor een item in de Fields array, zodat je daar toegang toe krijgt, met:Fields.$ . Deze uitdrukking retourneert de eerste overeenkomst in uw Fields array, zodat u de velden bereikt via Fields.$.Field of Fields.$.Result .
Laten we nu de update updaten :
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Houd er rekening mee dat ik de query heb ingekort omdat het gelijk is aan jouw uitdrukking.