Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MongoDB更新替换文档_Php_Cakephp_Mongodb - Fatal编程技术网

Php MongoDB更新替换文档

Php MongoDB更新替换文档,php,cakephp,mongodb,Php,Cakephp,Mongodb,我正在尝试通过PHP更新MongoDB文档。 我的问题是,当我更新时,文档数据会被删除,因此除了我更新的数据之外,其他数据也会消失 更新之前,文档如下所示: { "_id": { "$oid": "4e178b45419866350f000001" }, "Twitter": { "_id": { "$oid": "4e178b45419866350f000000" }, "creat

我正在尝试通过PHP更新MongoDB文档。 我的问题是,当我更新时,文档数据会被删除,因此除了我更新的数据之外,其他数据也会消失

更新之前,文档如下所示:

{
    "_id": {
        "$oid": "4e178b45419866350f000001"
    },
    "Twitter": {
        "_id": {
            "$oid": "4e178b45419866350f000000"
        },
        "created": {
            "$date": "2011-07-08T22:57:09Z"
        },
        "userid": "5552362"
    },
    "created": {
        "$date": "2011-07-08T22:57:09Z"
    }
}
以下是我的更新方式:

    $r = $Profile->update(
        array('Twitter._id' => new MongoId($profile['_id'])),
        array(
            '$set' => array(
                'Twitter' => array(
                    'name' => $user['name'],
                    'username' => $user['screen_name'],
                    'url' => $user['url'],
                    'modified' => new MongoDate()
                )
            )
        ),
        array('safe' => true)
    );
    debug($r); 

我认为您需要这种更新:

$Profile->update(
    array('Twitter.userid' => $user['id']),
    array(
        '$set' => array(
            'Twitter.name' => $user['name'],
            'Twitter.username' => $user['screen_name'],
            'Twitter.url' => $user['url'],
            'Twitter.modified' => new MongoDate()
        )
    ),
    array('multiple' => true)
);

我认为您需要这种更新:

$Profile->update(
    array('Twitter.userid' => $user['id']),
    array(
        '$set' => array(
            'Twitter.name' => $user['name'],
            'Twitter.username' => $user['screen_name'],
            'Twitter.url' => $user['url'],
            'Twitter.modified' => new MongoDate()
        )
    ),
    array('multiple' => true)
);

更新后文档可能重复,以及文档的外观如何?不应在属性前面加$,请参阅$set不是键,而是一个。更新后文档可能重复,以及文档的外观如何?不应在属性前面加$,请参阅$set不是键,而是一个。