残念ながら、$
は使用できません キーごとに複数回演算子を使用するため、残りの部分には数値を使用する必要があります。のように:
db.myCollection.update({
"id": 1,
"forecasts.forecast-id": 123,
"forecasts.levels.level": "proven",
"forecasts.levels.configs.config": "Custom 1"
},
{"$set": {"forecasts.$.levels.0.configs.0": newData}}
)
ネストされた配列を更新するためのMongoDBのサポートは不十分です。したがって、データを頻繁に更新する必要がある場合は、それらの使用を避け、代わりに複数のコレクションを使用することを検討することをお勧めします。
1つの可能性:forecasts
を作成する 独自のコレクションであり、level
の固定セットがあると仮定します 値、level
を作成します 配列ではなくオブジェクト:
{
_id: 123,
parentId: 1,
name: "Forecast 1",
levels: {
proven: {
configs: [
{
config: "Custom 1",
variables: [{ x: 1, y:2, z:3}]
},
{
config: "Custom 2",
variables: [{ x: 10, y:20, z:30}]
},
]
},
likely: {
configs: [
{
config: "Custom 1",
variables: [{ x: 1, y:2, z:3}]
},
{
config: "Custom 2",
variables: [{ x: 10, y:20, z:30}]
},
]
}
}
}
次に、次を使用して更新できます:
db.myCollection.update({
_id: 123,
'levels.proven.configs.config': 'Custom 1'
},
{ $set: { 'levels.proven.configs.$': newData }}
)