PHP MongoDB обновляет несколько полей одним запросом - PullRequest
1 голос
/ 11 октября 2011

Я пытался выполнить этот запрос:

$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
        array("parents" => 'data')
    ),
    array("upsert" => true)
);

Но он обновит только второй параметр "set" (который является массивом ("parent" => 'data')).Когда они выполняются в двух отдельных запросах, они работают нормально, но вместе это не так - что дает?!

Ответы [ 3 ]

1 голос
/ 11 октября 2011
$collection->update(
    array('_id' => 'mongoIDhere'),
    array(
        '$set' => array("parent" => 'data'),
    ),
    array("upsert" => true)
);

Помните, что MongoDB принимает только массив в формате пары ключ-> значение, т. Е. array("parents" => 'data') должно быть $something => array("parents" => 'data') ИЛИ вносить изменения в файл php.ini, чтобы в качестве ключа допускались нулевые значения.

0 голосов
/ 31 августа 2016

Попробуйте что-нибудь подобное.

$collection->update(
            array('_id' => 'mongoIDhere'),
            array(
                '$set' => 
                          array(
                                 array("parent" => 'data'),
                                 array("parents" => 'data')
                               )
            ),
            array("upsert" => true) 
         );

Надеюсь, это сработает ..

0 голосов
/ 22 апреля 2016

Попробуйте с несколько вариант

$collection->update(
    array('_id' => 'mongoIDhere'),
    array('$set' => array("parent" => 'data')),
    array("upsert" => true, "multiple" => true)
);

опция «несколько»

Все документы, соответствующие критериям $, будут обновлены. MongoCollection :: update () имеет совершенно противоположное поведение MongoCollection :: remove (): он обновляет один документ по умолчанию, а не все соответствующие документы. Рекомендуется всегда указывать, хотите ли вы обновить несколько документов или один документ, поскольку база данных может изменить свое поведение по умолчанию в какой-то момент в будущем.

Mongocollection в PHP Doc's

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