PHP MongoDB updateMany - использовать $ in в массиве $ filter - PullRequest
0 голосов
/ 19 марта 2020

Пусть будет задан ряд документов с уникальным свойством "id" и свойством "updated".

{"id": 1, "updated": false}, 
{"id": 2, "updated": false}, 
...
{"id": 100, "updated": false}

Предположим, что я через PHP хочу обновить документы с id-s

$php_ids = [11, 14, 23, 35]

и установить для «updated» значение «true».

Обычно используется метод MongoDB updateMany ($ filter, $ update, array $ options = []). Документация по https://docs.mongodb.com/php-library/v1.2/reference/method/MongoDBCollection-updateMany/ дает следующий пример:

$collection = (new MongoDB\Client)->test->restaurants;

$updateResult = $collection->updateMany(
[ 'borough' => 'Queens' ],
[ '$set' => [ 'active' => 'True' ]]
);

Однако я не смог найти пример того, как использовать $ in в фильтре (первый аргумент метода updateMany), чтобы включить мои $ php_ids в запросе.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

вы можете сделать то же самое с методом обновления.
, как показано ниже. (Синтаксис nosqlBooster)

db.yourCollectionName.update(
    { "id": { '$in': [11, 14, 23, 35] } },
    { $set: { "updated": "true" } },
    { multi: true });
0 голосов
/ 19 марта 2020

Отчасти благодаря этому примеру https://hotexamples.com/examples/mongodb/Collection/updateMany/php-collection-updatemany-method-examples.html

Я нашел решение своей проблемы:

 $filter = [
        'id' => ['$in' => $php_ids]
    ];
 $update = ['$set' => ['processed' => true]];

 $mongo_collection->updateMany($filter, $update);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...