Почему обновление работает, но не вкл? - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть следующий код, когда я звоню $ 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 Ответ

1 голос
/ 13 декабря 2011

Во-первых, вот краткое описание , которое демонстрирует, что код работает правильно.

Следует отметить две вещи.

  1. Инкремент будет работать только на числах. Сбой на других типах данных
  2. По умолчанию некоторые из этих сбоев могут быть беззвучными. MongoDB работает в режиме «Fire & Forget» и может не вызывать исключение.

Попробуйте запустить в «безопасном» режиме, чтобы убедиться, что ваши обновления работают правильно.

В вашем случае это выглядит следующим образом:

$coll1->update(array("_id"=>$pid),array('$inc' => array("balance" => $credit)), array('safe'=>true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...