为什么更新集有效但不包含?

时间:2011-12-13 01:08:52

标签: php mongodb

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

1 个答案:

答案 0 :(得分:1)

首先,这是一个quick gist,演示代码正常运行。

有两点需要注意。

  1. 增量仅适用于数字。它将在其他数据类型上失败
  2. 默认情况下,其中一些故障可能是静默的。 MongoDB在“Fire& Forget”模式下运行,它可能不会抛出异常。
  3. 尝试以“安全”模式运行,以确保您的更新正常运行。

    在您的情况下,这看起来如下:

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