Где ошибка в запросе MongoDB?

Всем привет. Делаю запрос, вроде правильный, но update() срабатывает неверно
$update['modules.$.elements.$.html']  = 'ТЕСТ';
        $result = Blocks::where([
            '_id' => $block_id,
            'modules' => [
                '$elemMatch' => [
                    'module_id' => $module_id,
                    'elements' => [
                        '$elemMatch' => [
                            'element_id' => $element_id
                        ]
                    ]
                ]
            ]
        ])->update($update);

Запись находит, но обновлять не хочет. Если обновляю так
$update['modules.$.elements'] = 'ТЕСТ';
то тут все ОК. А вот в следующую вложенность не сохраняет. Что не так в запросе? Как можно сохранить параметр html?

Структура
"_id": "1",
    "modules" : [ 
        {
            "module_id" : "2",
            "elements" : [ 
                {
                    "element_id" : "3",
                    "html": "<div></div>"
                }
            ]
        }
    ]
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
@c0va23
Backend-разработчик
Судя по документации, обновление элемента массива работает только для одного уровня вложенности.

https://docs.mongodb.com/manual/reference/operator...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы