1

我试过运行这个查询:

$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
        array("parents" => 'data')
    ),
    array("upsert" => true)
);

但它只会更新第二个“set”参数(即 array("parents" => 'data') )。当在两个单独的查询中完成时,这些工作正常,但在一起却不行 - 什么给了?!

4

4 回答 4

1
$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
    ),
    array("upsert" => true)
);

请记住,MongoDB 只接受键-> 值对格式的数组,即array("parents" => 'data')应该$something => array("parents" => 'data')在您的 php.ini 文件中进行或更改,以便允许空值作为键。

于 2011-10-11T07:17:31.070 回答
0

尝试多个选项

$collection->update(
    array('_id' => 'mongoIDhere'),
    array('$set' => array("parent" => 'data')),
    array("upsert" => true, "multiple" => true)
);

“多个”选项

所有匹配 $criteria 的文档都将被更新。MongoCollection::update() 的行为与 MongoCollection::remove() 完全相反:它默认更新一个文档,而不是所有匹配的文档。建议您始终指定是要更新多个文档还是单个文档,因为数据库可能会在将来的某个时候更改其默认行为。

PHP Doc 中的 Mongocollection

于 2016-04-22T10:40:18.497 回答
0

尝试这样的事情。

$collection->update(
            array('_id' => 'mongoIDhere'),
            array(
                '$set' => 
                          array(
                                 array("parent" => 'data'),
                                 array("parents" => 'data')
                               )
            ),
            array("upsert" => true) 
         );

希望这会奏效..

于 2016-08-31T12:30:31.143 回答
0

假设您使用的是https://github.com/mongodb/mongo-php-library,您应该尝试以下操作:

$collection->update(
  ['_id' => 'mongoIDhere],
  ['$set' => ['parent' => 'data', 'parent2' => 'data2']],
  ['upsert' => true]
);

自从您提出问题以来,我希望您找到了解决问题的方法。但是我今天遇到了同样的问题并且无法通过搜索引擎找到任何答案,所以我认为这可能会帮助其他人。

于 2020-02-10T18:07:14.500 回答