MongoDB-PHP更新会覆盖现有内容 - 为什么?

use*_*659 0 php mongodb

我在mongo db collection中有以下内容,

{ "_id" : ObjectId("5052f343381ef8bc10000011"), "first_name" : "Tadataka", "midle_name"  :      
"", "last_name" : "Yamada", "title" : "Independent Director", "biogra
phy" : "Dr. Tadataka Yamada, M.D., is Independent Director of Agilent Technologi
es Inc., ", "rank" : " ", "department" : " ", "current" : "true", "company_id" :     ObjectId("50072714b4a6deba100051d3"
) } }
Run Code Online (Sandbox Code Playgroud)

当我尝试为少数字段更新上述内容并且如果不存在则插入新字段时,现有字段将被覆盖.这是我的代码,

$mycollection->update(array("_id" => $id), array('$set' => array("first_name" => $first_name, "updated_at" => $uat));
Run Code Online (Sandbox Code Playgroud)

我得到的结果是

{ "_id" : ObjectId("5052f343381ef8bc10000011"), "first_name" : "Tadataka", "updated_at" : 134567894 }
Run Code Online (Sandbox Code Playgroud)

而不是只更新值,我的整个内容被覆盖,我失踪的地方.

Jus*_*ohn 5

试试这样吧

$mycollection->update(
            array("_id" => $id),
            array('$set' => array("first_name" => $first_name, "updated_at" => $uat)),
            array("upsert" => true)
);
Run Code Online (Sandbox Code Playgroud)