mongodb — мульти-обновление с $ set и php Mongo

Я пытаюсь обновить несколько элементов в коллекции, используя функцию update () с параметром multi = true на платформе mongolab. Проблема только в обновлении первого элемента в коллекции.

Коллекция:

{
"_id": {
"$oid": "5454b446e4b02a012c939a0a"},
"value": "1234",
"name": "first"},
{
"_id": {
"$oid": "5454b446e4b02a012c939a0a"},
"value": "1234",
"name": "second"}

Код скрипта:

$db->collection->update(
array('value' => '1234'),
array('$set' => array(
'name' => 'example name',
)),
array('multi' => true)
);

Результат:

{
"_id": {
"$oid": "5454b446e4b02a012c939a0a"},
"value": "1234",
"name": "example name"},
{
"_id": {
"$oid": "5454b446e4b02a012c939a0a"},
"value": "1234",
"name": "second"}

Функция update () принимает только три массива в качестве аргументов.

0

Решение

Привет Йогеш,
Я думаю, что ваш запрос должен быть:

db.collectionName.update({"value":"1234"},{$set:{"name":"example name"}},{'upsert':true, 'multiple': true});

Соответствующие коды PHP будут:

<?php
$m = new MongoClient(); //connects to local mongo

$db_name = 'ri'; //replace database name you want to work with
$collection_name = 'brand_graph'; //replace collection name you want to work with

$select = $m->selectDB($db_name)->selectCollection($collection_name);

$where_array = array(
'value' => 1234
);

$update_data = array(
'$set' => array(
'name' => 'example name'
)
);

$options = array(
'upsert' => true,
'multiple' => true
);$select->update($where_array, $update_data, $options);
?>

Я надеюсь, что это то, что вы искали.

3

Другие решения

Я пишу ниже монго запрос, который обновляет несколько документов, но я не знаю, как преобразовать это в PHP-код, но для справки вы должны использовать этот запрос

 db.collectionName.update({"value":"1234"},{$set:{"name":"example name"}},true,true)
0

По вопросам рекламы [email protected]