Mongo Multiple Update с помощью php - PullRequest
0 голосов
/ 28 марта 2012

Я хочу обновить несколько документов с разными значениями в одном запросе, если это возможно.

например, мои документы могут выглядеть так:

1:

{
   "key": 123,
   "price": 10,

}

2:

{

   "key": 1234,
   "price": 15,

}

...

Затем у меня есть форма для обновления цены. Возможно, я хочу изменить # 1 на 15 и # 2 на 400 в 1 запросе и т. Д...

Ранее я делал несколько обновлений, например, так:

$db->update('items', array('key' -> array('$in' => $items_to_update)), array('$inc' => array('price' => 1))

, которые отлично работали для обновления нескольких документов и установки поля в одно и то же значение, но я не уверен, какобновите несколько документов и обновите значение до различных значений.

1 Ответ

1 голос
/ 28 марта 2012

Из документов MongoDB (http://www.mongodb.org/display/DOCS/Atomic+Operations#AtomicOperations-ApplyingtoMultipleObjectsAtOnce):

. Вы можете использовать множественное обновление, чтобы применить один и тот же модификатор к каждому соответствующему объекту. По умолчанию многократное обновление разрешит некоторые другие операции (которые могутбыть записано) для чередования. Таким образом, это будет только псевдоатомный (псевдо-изолированный). Чтобы сделать его полностью изолированным, вы можете использовать $ atomic motifier:

неизолированный:

db.foo.update( { x : 1 } , { $inc : { y : 1 } } , false , true );

изолированные:

db.foo.update( { x : 1 , $atomic : 1 } , { $inc : { y : 1 } } , false , true );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...