mongoDB、PHP更新特定值不是所有值
我在更新从web服务获取的值时遇到问题mongoDB、PHP更新特定值不是所有值,php,mongodb,Php,Mongodb,我在更新从web服务获取的值时遇到问题 $collection = $modb->$table; $collection->update(array("id" => (int)$row['id']), array('$set' => array( "user_id" => (int)$post_data_array['user_id'], "story" => (int)$post_data_array['story'],
$collection = $modb->$table;
$collection->update(array("id" => (int)$row['id']),
array('$set' => array(
"user_id" => (int)$post_data_array['user_id'],
"story" => (int)$post_data_array['story'],
"surprize_sub1" => (int)$post_data_array['surprize_sub1'],
"surprize_sub2" => (int)$post_data_array['surprize_sub2'],
"surprize_sub3" => (int)$post_data_array['surprize_sub3'],
"exr_solve" => (int)$post_data_array['exr_solve'],
"exr_assessmnt" => (int)$post_data_array['exr_assessmnt'],
"exr_refresh" => (int)$post_data_array['exr_refresh'],
"sound_control" => (int)$post_data_array['sound_control'],
"clock_control" => (int)$post_data_array['clock_control'],
"switch_user" => (int)$post_data_array['switch_user'],
"exr_print" => (int)$post_data_array['exr_print'],
"write_on_wall" => (int)$post_data_array['write_on_wall'],
"switch_letter" => (int)$post_data_array['switch_letter'],
"view_controls" => (int)$post_data_array['view_controls'],
)));
我从最终用户那里获得这些值。。我希望发送的特定字段在不丢失所有其余数据的情况下进行更新
在此代码中,仅设置发送数据,而删除其余数据。。我只想更改已发送的,其余的保持原样,请建议您使用而不是更新
updateOne
使用MongoDB\Collection::updateOne()方法更新与筛选器匹配的单个文档
谢谢Hassan如果我更改了多个字段,但不是所有字段,该怎么办。。你知道吗?在第二个数组中,只选择要更新的字段。哈桑,因为这是一个Web服务,我不能保证更新了哪些值。。在更新mongoDB中的值之前,您能帮我检查从webservice获得的值并进行检查吗。。我是新手!由于这是一个Web服务,您必须验证并保证发送到数据库的值Sure。。但如何做到这一点呢。。我想检查以下内容:如果我有一个值,请替换旧值,然后保留旧值。。并更新数据库
$collection = $modb->$table;
$collection->updateOne(array("id" => (int)$row['id']),
array('$set' => array(
// .... array elements
)));