更新集合会删除内部的所有信息

时间:2013-08-22 17:30:38

标签: php mongodb nosql

我是MongoDB的新手并尝试执行我的第一次更新。

我的users collection由插入语句填充。现在,我想将field authCode添加或插入特定用户的一些数据。

我的问题是,当我执行以下功能时,整个用户数据将被该更新语句中的信息替换。我的理解是,使用upsert我会insertupdate一个users集合。鉴于用户已经存在,我希望只创建或更新authCode字段。

有人能指出我做错了什么吗?

public function addAuthCode( array $userId, $code ) {
        $user = $this->db()->user;
        $user->update(
                    $userId,
                    array( 'authCode' => $code ),
                    array( 'upsert' => true, 'safe' => true )
                    );
    }

1 个答案:

答案 0 :(得分:2)

您需要查看MongoDB文档,了解此处的更新:http://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update

具体来说:

添加新字段

db.bios.update(
   { _id: 3 },
   { $set: {
             mbranch: "Navy",
             "name.aka": "Amazing Grace"
           }
   }
)

请注意,要添加字段,您需要使用$ set运算符

克里斯@ MongoLab