Vous êtes allé trop loin avec ce joker $
. Vous recherchez un élément dans les Fields
tableau, vous obtenez donc un accès à celui-ci, avec :Fields.$
. Cette expression renvoie la première correspondance dans votre Fields
tableau, vous atteignez donc ses champs par Fields.$.Field
ou Fields.$.Result
.
Maintenant, mettons à jour la update
:
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Veuillez noter que j'ai raccourci la query
car il est égal à votre expression.