【问题标题】:PHP MongoDB updateMany - use $in in $filter arrayPHP MongoDB updateMany - 在 $filter 数组中使用 $in
【发布时间】:2020-03-19 08:45:36
【问题描述】:

给定多个具有唯一属性“id”和属性“updated”的文档。

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

假设我想通过 PHP 更新带有 id-s 的文档

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

并将“更新”设置为“真”。

一般使用 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' ]]
);

但我找不到如何在过滤器(updateMany 方法的第一个参数)中使用 $in 以将我的 $php_ids 包含在查询中的示例。

【问题讨论】:

    标签: php mongodb mongodb-query


    【解决方案1】:

    部分感谢这个例子 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);
    

    【讨论】:

      【解决方案2】:

      你也可以用更新方法做同样的事情。
      如下所示。(nosqlBooster 语法)

      db.yourCollectionName.update(
          { "id": { '$in': [11, 14, 23, 35] } },
          { $set: { "updated": "true" } },
          { multi: true });
      

      【讨论】:

      • 谢谢@amit-joshi!顺便说一句,这是 PHP 方式吗?
      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2018-04-07
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      相关资源
      最近更新 更多