Has ido demasiado profundo con ese comodín $ . Coincide con un elemento en los Fields matriz, por lo que obtiene acceso a eso, con:Fields.$ . Esta expresión devuelve la primera coincidencia en sus Fields matriz, por lo que llega a sus campos por Fields.$.Field o Fields.$.Result .
Ahora, actualicemos la update :
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
Tenga en cuenta que he acortado la query ya que es igual a su expresión.