Sei andato troppo in profondità con quel carattere jolly $
. Fai una corrispondenza per un elemento nei Fields
array, quindi puoi accedervi con:Fields.$
. Questa espressione restituisce la prima corrispondenza nei tuoi Fields
array, quindi raggiungi i suoi campi da Fields.$.Field
o Fields.$.Result
.
Ora, aggiorniamo l'update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Tieni presente che ho abbreviato la query
in quanto è uguale alla tua espressione.