我正在尝试使用MongoDB PHP代码更新数组。
这是我的实际数组:
array
[_id] => MongoId Object
(
[$id] => 52ce7a5f59f401a95c3f7430
)
[domain_data] => Array
(
[hostname] => google.com
)
)
我需要像这样更新我的数组
array
[_id] => MongoId Object
(
[$id] => 52ce7a5f59f401a95c3f7430
)
[domain_data] => Array
(
[hostname] => google.com
[valid] => 1
)
)
但是,数组正在像这样更新
array
[_id] => MongoId Object
(
[$id] => 52ce7a5f59f401a95c3f7430
)
[domain_data] => Array
(
[valid] => 1
)
)
这是我的代码:
$cursor = $collection->find();
$new_data = array('domain_data'=>array("valid"=>1));
foreach ($cursor as $doc ){
print_r($doc);
$collection->update(array(),array('$set'=>$new_data));
}
答案 0 :(得分:0)
您正在使用具有新有效值的数组为“domain_data”设置全新值。相反,您只需要设置domain_data.valid键。
类似的东西:
<?php
$m = new MongoClient;
$collection = $m->test->test;
// clean out collection for test
$collection->drop();
// insert original document
$collection->insert( array(
'_id' => new MongoID("52ce7a5f59f401a95c3f7430"),
'domain_data' => array(
'hostname' => 'google.com',
)
) );
// new data, see how we're *not* setting a whole new array for 'domain_data':
$new_data = array('domain_data.valid' => 1);
// update
$collection->update(
array( '_id' => new MongoID("52ce7a5f59f401a95c3f7430")),
array( '$set' => $new_data )
);
// query
var_dump( $collection->findOne( array( '_id' => new MongoID("52ce7a5f59f401a95c3f7430") ) ) );