下にコレクションがあります。配列要素を更新しようとしています。
lineItem _id の値が 1 の場合は更新しようとしています。spec リストに移動し、specName が「モデル」の場合は、characteristicsValue を 900 から 50 に更新します。ご覧のとおり、_id も配列です。
コレクションデータ:
{
"_id": "100",
"name": "Campaign",
"status": "Active",
"parts": {
"lineItem": [
{
"_id": [
{
"name": "A",
"value": "1"
}
],
"spec": [
{
"specName": "Brand",
"characteristicsValue": [
{
"value": "500"
}
]
},
{
"specName": "Model",
"characteristicsValue": [
{
"value": "900"
}
]
}
]
},
{
"_id": [
{
"name": "B",
"value": "2"
}
],
"spec": [
{
"specName": "Brand",
"characteristicsValue": [
{
"value": "300"
}
]
},
{
"specName": "Model",
"characteristicsValue": [
{
"value": "150"
}
]
}
]
},
{
"_id": [
{
"name": "C",
"value": "2"
}
]
}
]
}
}
関連するアップデートが期待どおりに機能しません。
db.Collection.update({"parts.lineItem._id.value" : "1",
"parts.lineItem.spec.specName" : "Model" },{ $set: {
"parts.lineItem.spec.$.characteristicsValue" : "50" } })
編集: すべての _id には仕様配列があります。そのため、_id を見つけてから、_id 配列の下の仕様に移動し、ブランドを見つけて値を更新する必要があります。