MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

一括操作で複数の更新を実行し、MongoDBの配列内の要素を更新します


これには、initializeOrderedBulkOp()を使用します。コレクションの新しいBulk()オペレーションビルダーを初期化して返します。ビルダーは、MongoDBが一括で実行する書き込み操作の順序付きリストを作成します。

ドキュメントを使用してコレクションを作成しましょう-

>db.demo550.insertOne({"Name":"Chris","details":[{"Marks":49,Result:"fail"},{"Marks":58,Result:"fail"}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8e35bd9e5f92834d7f05e4")
}

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo550.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e8e35bd9e5f92834d7f05e4"), "Name" : "Chris", "details" : [ { "Marks" : 49, "Result" : "fail" }, { "Marks" : 58, "Result" : "fail" } ] }

以下は、MongoDBの配列内の要素を更新し、一括操作を実行するためのクエリです-

> var all= db.demo550.initializeOrderedBulkOp(),
... itr = 0;
> db.demo550.find({ "Name": "Chris", "details.Result": "fail" }).forEach(function(doc) {
...    doc.details.filter(function(d){ return d.Result = "fail" }).forEach(function(d) {
...       all.find({ "_id": doc._id, "details.Result": "fail" }).updateOne({
...          "$set": { "details.$.Result": "PASS" }
...       });
...       itr++;
...       if ( itr % 10== 0 ) {
...          all.execute();
...          all = db.demo550.initializeOrderedBulkOp();
...       }
...    });
...    if ( itr % 10 != 0 )
...    all.execute();
... });

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo550.find();

これにより、次の出力が生成されます-

{ "_id" : ObjectId("5e8e35bd9e5f92834d7f05e4"), "Name" : "Chris", "details" : [ { "Marks" : 49, "Result" : "PASS" }, { "Marks" : 58, "Result" : "PASS" } ] }

  1. ドキュメントとサブドキュメントの例を含むMongoDBを表示し、更新します

    以下は、ドキュメントとサブドキュメントを示す構文です- db.yourCollectionName.insertOne(    {       yourFiledName:yourValue,       yourFieldName : [          {             yourFiledName1,             you

  2. AND演算子を使用してMySQLの更新を実行します

    最初にテーブルを作成しましょう- mysql> create table DemoTable613 (Id int,Age int,isMarried tinyint(1)); Query OK, 0 rows affected (0.54 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable613 values(100,29,0); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable613 values(200,2