我有以下代码,当我调用$ set时它会覆盖我的数据 为正确的用户提供正确的信息。
工作的:
$coll1->update(array("_id"=>$pid),array('$set' => array("balance" => $credit)));
然而,当我想增加任何事情时。
不起作用:
$coll1->update(array("_id"=>$pid),array('$inc' => array("balance" => $credit)));
根据文档,他们应遵循相同的模式:
$inc
{ $inc : { field : value } }
如果对象中存在字段,则按字段数增加字段,否则将字段设置为数字值。这也可以通过使用负值来减少。
$set
{ $set : { field : value } }
将字段设置为值。 $ set支持所有数据类型。
答案 0 :(得分:1)
首先,这是一个quick gist,演示代码正常运行。
有两点需要注意。
尝试以“安全”模式运行,以确保您的更新正常运行。
在您的情况下,这看起来如下:
$coll1->update(array("_id"=>$pid),array('$inc' => array("balance" => $credit)), array('safe'=>true));