php mongodb更新子元素

时间:2014-11-24 22:57:50

标签: php mongodb

我有一个包含像这样的项目的子元素的文档

"bar" : "547244fe10f0edd3128b4567",
    "items" : [ 
        {
            "1" : {
                "message" : "",
                "display" : "true",
                "type" : "text"
            }
        }, 
        {
            "2" : {
                "id" : "234234",
                "type" : "image",
                "message" : "foo",
                "display" : "true",
                "created_at" : NumberLong(1416432114)
            }
        }, 
        {
            "3" : {
                "message" : "",
                "display" : "true",
                "type" : "text"
            }
        }, 

我正在尝试更新其中一个儿童价值

$foo['items']['1']['message'] = 'hello';
$story = InfoDB::where('_id', $id)->update($foo);

那样

        "1" : {
            "message" : "",
            "display" : "true",
            "type" : "text"
        }

变为

        "1" : {
            "message" : "hello",
            "display" : "true",
            "type" : "text"
        }

但是当我运行update命令时,它会删除文档中的所有子项。

我是否需要更新整个文档?还是有其他功能?

我正在使用https://github.com/jenssegers/laravel-mongodb

1 个答案:

答案 0 :(得分:1)

因为你们每个人都有'是一个自己的项目,因此有一个自己的数组索引,你必须对你的代码做一点调整。所以只需尝试替换此代码

$foo['items']['1']['message'] = 'hello';

这一个

$foo['items'][0]['1']['message'] = 'hello';

这将调用第一个项目(0),然后调用项目中的特定键(" 1")。