我有以下代码,当我调用$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 } }
将字段设置为value。$set支持所有数据类型
首先,这里有一个快速的要点来演示代码的正确工作。
有两点需要注意。
- 增量只对数字有效。对于其他数据类型 将失败。
- 默认情况下,其中一些故障可以保持沉默。MongoDB在"Fire &忘记"模式,它可能不会抛出异常。
尝试在"安全"模式下运行以确保您的更新工作正常。
在你的例子中,它看起来像这样:
$coll1->update(array("_id"=>$pid),array('$inc' => array("balance" => $credit)), array('safe'=>true));