У меня есть структура документа, которая глубоко вложена, например:
{id: 1,
forecasts: [ {
forecast_id: 123,
name: "Forecast 1",
levels: [
{ level: "proven",
configs: [
{
config: "Custom 1",
variables: [{ x: 1, y:2, z:3}]
},
{
config: "Custom 2",
variables: [{ x: 10, y:20, z:30}]
},
]
},
{ level: "likely",
configs: [
{
config: "Custom 1",
variables: [{ x: 1, y:2, z:3}]
},
{
config: "Custom 2",
variables: [{ x: 10, y:20, z:30}]
},
]
}
]
},
]
}
Я пытаюсь обновить коллекцию, чтобы вставить новую конфигурацию, которая выглядит так:
newdata = {
config: "Custom 1",
variables: [{ x: 111, y:2222, z:3333}]
}
Я пытаюсь сделать что-то подобное в mongo (в Python):
db.myCollection.update({"id": 1,
"forecasts.forecast-id": 123,
"forecasts.levels.level": "proven",
"forecasts.levels.configs.config": "Custom 1"
},
{"$set": {"forecasts.$.levels.$.configs.$": newData}}
)
Я получаю "Невозможно применить оператор позиционирования без соответствующего поля запроса, содержащего ошибку массива". Каков правильный способ сделать это в монго? Это mongo v2.4.1.