为什么update set可以工作,但是不能


Why does update set work but not inc?

我有以下代码,当我调用$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支持所有数据类型

首先,这里有一个快速的要点来演示代码的正确工作。

有两点需要注意。

  1. 增量只对数字有效。对于其他数据类型
  2. 将失败。
  3. 默认情况下,其中一些故障可以保持沉默。MongoDB在"Fire &忘记"模式,它可能不会抛出异常。

尝试在"安全"模式下运行以确保您的更新工作正常。

在你的例子中,它看起来像这样:

$coll1->update(array("_id"=>$pid),array('$inc' => array("balance" => $credit)), array('safe'=>true));