あなたはそのワイルドカード$で深すぎました 。 Fieldsのアイテムに一致します 配列なので、次のコマンドでアクセスできます:Fields.$ 。この式は、Fieldsの最初の一致を返します 配列なので、Fields.$.Fieldでフィールドにアクセスできます またはFields.$.Result 。
それでは、updateを更新しましょう :
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
queryを短縮したことに注意してください それはあなたの表現に等しいからです。