ОБНОВЛЕНИЕ mongoDB - Обходной путь в проблеме Позиционного $ Оператора

Я довольно долго искал информацию об обновлении вложенного массива в mongoDB. До сих пор я знаю, что есть проблема с позиционным оператором $ для глубокого массива, смотрите это: https://jira.mongodb.org/browse/SERVER-831

Но есть ли здесь кто-нибудь, кто мог бы помочь мне обойти это? Это моя примерная схема:

{
    folder_data : [
        {
            "folderName" : "First",
            "otherFolder" : []
        },
        {
            "folderName" : "Second",
            "otherFolder" : [
                {
                    "folderName" : "SecondA",
                    "otherFolder" : [
                        {
                            "folderName" : "SecondB",
                            "otherFolder" : [

                                // put my new data here                             

                            ]
                        },
                        {
                            "folderName" : "SecondBextra",
                            "otherFolder" : []
                        }
                    ]
                },
                {
                    "folderName" : "SecondAextra",
                    "otherFolder" : []
                },
            ]
        }
    ]   
}

и это так далеко я сделал:

Рабочая (для первого массива):

$collection->update(
            array('folder_data.folderName' => 'Second'), 
            array('$set' => array('folder_data.$.otherFolder' => array('test' => 'sample')))
        );

Не работает:

$collection->update(
            array(
                'folder_data.folderName' => 'Second',
                'folder_data.otherFolder.folderName' => 'SecondA',
                'folder_data.otherFolder.otherFolder.folderName' => 'SecondB'
            ), 
            array('$set' => array('folder_data.$.otherFolder.$.otherFolder.$.otherFolder' => array('test' => 'sample'))));

0 ответов

Другие вопросы по тегам