PHP-`MongoDB \ Collection :: updateMany`メソッドの変数として$ filter配列と$ update配列を渡します

velkoon

PHP MongoDB updateManyメソッドを使用して$filter$update配列を変数として渡そうとしています

公式ドキュメントには、次のテンプレートが用意されていますupdateMany

function updateMany($filter, $update, array $options = []): MongoDB\UpdateResult

$filterなどarray|object$updateとしてarray|object

配列を次のようupdateManyにハードコーディングする$filter正常に使用でき$updateます。

オプション1:アレイのハードコード(SUCCESS)

$mongo = new Mongo("mongodb://127.0.0.1:27017/myDB");
$db = new MongoDB\Database($mongo, "myDB");
$collection = $db->selectCollection("articles");
$result = $collection->updateMany(
    ["_id" => new \MongoDB\BSON\ObjectID("5cae4176af659c1ba03591b5")],
    ['$set' => ["title" => "update_test"]]
);

ただし、配列変数を作成して代わりにそれらを渡そうとすると、機能しません。

オプション2:配列変数を渡す(エラー)

$filter_string = "[\"_id\" => new \\MongoDB\\BSON\\ObjectID(\"5cae4171af659c1ba03591b3\")]";
$update_string = "['\$set' => [\"title\" => \"update_test\"]]";

$filter = explode(',', $filter_string);
$update = explode(',', $update_string);

$mongo = new Mongo("mongodb://127.0.0.1:27017/myDB");
$db = new MongoDB\Database($mongo, "myDB");
$collection = $db->selectCollection("articles");
$result = $collection->updateMany(
    [$filter], // Does not work as $filter(without the brackets) either.
    [$update] // Does not work as $update (without the brackets) either.
);

オプション2エラーメッセージ

Fatal error: Uncaught MongoDB\Exception\InvalidArgumentException: First key in $update argument is not an update operator in /var/www/html/mySite/vendor/mongodb/mongodb/src/Operation/UpdateMany.php:82 Stack trace: #0 /var/www/html/mySite/vendor/mongodb/mongodb/src/Collection.php(1005): MongoDB\Operation\UpdateMany->__construct('myDB', 'articles', Array, Array, Array) #1 /var/www/html/mySite/update.php(105): MongoDB\Collection->updateMany(Array, Array) #2 {main} thrown in /var/www/html/mySite/vendor/mongodb/mongodb/src/Operation/UpdateMany.php on line 82

それはうまくいきませんでした。したがって、[]代わりに配列全体を文字列として渡した場合、PHPは文字列内のを配列区切り文字として自動的に解釈するのではないかと思いました(もちろんそれは機能しません)。

オプション3:配列変数を文字列として渡す(エラー)

$filter_string = "[\"_id\" => new \\MongoDB\\BSON\\ObjectID(\"5cae4171af659c1ba03591b3\")]";
$update_string = "['\$set' => [\"title\" => \"update_test\"]]";

$mongo = new Mongo("mongodb://127.0.0.1:27017/myDB");
$db = new MongoDB\Database($mongo, "myDB");
$collection = $db->selectCollection("articles");
$result = $collection->updateMany(
    $filter_string,
    $update_string
);

オプション3エラーメッセージ

Fatal error: Uncaught MongoDB\Exception\InvalidArgumentException: Expected $update to have type "array or object" but found "string" in /var/www/html/mySite/vendor/mongodb/mongodb/src/Exception/InvalidArgumentException.php:32 Stack trace: #0 /var/www/html/mySite/vendor/mongodb/mongodb/src/Operation/UpdateMany.php(78): MongoDB\Exception\InvalidArgumentException::invalidType('$update', '['$set' => ["ti...', 'array or object') #1 /var/www/html/mySite/vendor/mongodb/mongodb/src/Collection.php(1005): MongoDB\Operation\UpdateMany->__construct('myDB', 'articles', '["_id" => new \\...', '['$set' => ["ti...', Array) #2 /var/www/html/mySite/update.php(105): MongoDB\Collection->updateMany('["_id" => new \\...', '['$set' => ["ti...') #3 {main} thrown in /var/www/html/mySite/vendor/mongodb/mongodb/src/Exception/InvalidArgumentException.php on line 32

Tl; dr:PHPメソッドの変数$filter$update変数をどの形式で渡しupdateManyますか?

ラフル

あなたはこのように直接達成することができます、

$filterOption = ["_id" => new \MongoDB\BSON\ObjectID("5cae4176af659c1ba03591b5")],
$updateOption = ["title" => "update_test"];

そしてあなたの更新クエリで

$result = $collection->updateMany(
    $filterOption, 
    ['$set' => $updateOption], 
);

これはうまくいくはずです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

phpを使用してmongodbのarray(collection)内の配列内に配列をプッシュします

分類Dev

MongoDBのドキュメントのサブ配列をphpのテーブルとして表示します

分類Dev

メソッド引数を変数または配列として渡す

分類Dev

Laravel-php変数を配列としてJSに渡す

分類Dev

文字列配列をPOSTとしてPHPスクリプトに渡します

分類Dev

PHPで配列ではなく、引数として配列を渡す

分類Dev

PHPは、配列を個々の変数に簡単に分解して、関数に渡すことができます

分類Dev

PHPで引数として配列を渡す

分類Dev

update mongoDB を使用して objectId の配列から削除します。

分類Dev

ajaxメソッドを使用してjavascript変数をphpファイルにPOSTしようとしています:POSTですが、phpファイル内の$ POST配列で未定義のインデックスを取得しています

分類Dev

PHP変数を配列に渡すとnullになります

分類Dev

PHPを使用してドキュメントのmongodb配列フィールド値を出力します

分類Dev

PHPを使用してドキュメントのmongodb配列フィールド値を出力します

分類Dev

phpのmongodb-mongodbコレクションに配列を挿入します

分類Dev

メソッドと変数の宣言におけるPHP配列と[]

分類Dev

php変数/配列データをAngularjsに渡します

分類Dev

PHP配列をJavascript変数に渡します

分類Dev

php配列をAjax変数に渡します

分類Dev

php:配列の各要素を文字列として表示します

分類Dev

PHP7.0で関数パラメータとして配列を渡す

分類Dev

MongoDB:$ filter複数の配列

分類Dev

PHPの別の配列からMongoDB配列の部分文字列を検索します

分類Dev

phalconphpのform-> isValid()メソッドのPHP配列を文字列として出力する

分類Dev

配列をphpからjavascript関数の引数として渡す

分類Dev

配列の値を多次元配列のphp変数に渡します

分類Dev

配列を関数の引数として指定し、PHPで通常の変数として取得します

分類Dev

異なる配列の変数としてのPHP配列?

分類Dev

MongoDB `$ in`演算子を使用した数値の配列の変換と受け渡し

分類Dev

mongodbは、db.update()を使用して複数の配列要素を更新します

Related 関連記事

  1. 1

    phpを使用してmongodbのarray(collection)内の配列内に配列をプッシュします

  2. 2

    MongoDBのドキュメントのサブ配列をphpのテーブルとして表示します

  3. 3

    メソッド引数を変数または配列として渡す

  4. 4

    Laravel-php変数を配列としてJSに渡す

  5. 5

    文字列配列をPOSTとしてPHPスクリプトに渡します

  6. 6

    PHPで配列ではなく、引数として配列を渡す

  7. 7

    PHPは、配列を個々の変数に簡単に分解して、関数に渡すことができます

  8. 8

    PHPで引数として配列を渡す

  9. 9

    update mongoDB を使用して objectId の配列から削除します。

  10. 10

    ajaxメソッドを使用してjavascript変数をphpファイルにPOSTしようとしています:POSTですが、phpファイル内の$ POST配列で未定義のインデックスを取得しています

  11. 11

    PHP変数を配列に渡すとnullになります

  12. 12

    PHPを使用してドキュメントのmongodb配列フィールド値を出力します

  13. 13

    PHPを使用してドキュメントのmongodb配列フィールド値を出力します

  14. 14

    phpのmongodb-mongodbコレクションに配列を挿入します

  15. 15

    メソッドと変数の宣言におけるPHP配列と[]

  16. 16

    php変数/配列データをAngularjsに渡します

  17. 17

    PHP配列をJavascript変数に渡します

  18. 18

    php配列をAjax変数に渡します

  19. 19

    php:配列の各要素を文字列として表示します

  20. 20

    PHP7.0で関数パラメータとして配列を渡す

  21. 21

    MongoDB:$ filter複数の配列

  22. 22

    PHPの別の配列からMongoDB配列の部分文字列を検索します

  23. 23

    phalconphpのform-> isValid()メソッドのPHP配列を文字列として出力する

  24. 24

    配列をphpからjavascript関数の引数として渡す

  25. 25

    配列の値を多次元配列のphp変数に渡します

  26. 26

    配列を関数の引数として指定し、PHPで通常の変数として取得します

  27. 27

    異なる配列の変数としてのPHP配列?

  28. 28

    MongoDB `$ in`演算子を使用した数値の配列の変換と受け渡し

  29. 29

    mongodbは、db.update()を使用して複数の配列要素を更新します

ホットタグ

アーカイブ