MongoDBで複数のドキュメントを一括追加する方法:bulkWrite()の使い方
MongoDBで複数のドキュメントを一括追加するには
MongoDBで複数の書き込み操作を一度に実行するには、bulkWrite()メソッドを使用します。挿入・更新などの複数の操作をまとめて処理できるため、個別にクエリを実行するよりも効率的です。
まず、追加したいデータを配列として用意します。以下の例では、名前と2つの値を持つドキュメントを2件定義しています。
> const arrayList = [
... {"Value1":100, "Value2":200, "Name": "John"},
... {"Value1":100, "Value2":200, "Name": "Bob"}
... ];
次に、配列の各要素をもとにupdateOne操作を組み立てます。ここでupsert: trueを指定すると、条件に一致するドキュメントが存在しない場合に自動的に新規作成されます。
> let op1 = [];
> arrayList.forEach(({ Value1, Value2, Name }) => {
... op1.push({
... "updateOne": {
... "filter": { Name},
... "update": { "$set": { Value1, Value2, Name } },
... "upsert": true
... }
... })
... });
> db.demo397.bulkWrite(op1);
上記のクエリを実行すると、以下のような結果が出力されます。今回の例では一致する既存ドキュメントが存在しなかったため、2件ともアップサート(新規挿入)されたことがわかります。
{
"acknowledged" : true,
"deletedCount" : 0,
"insertedCount" : 0,
"matchedCount" : 0,
"upsertedCount" : 2,
"insertedIds" : {
},
"upsertedIds" : {
"0" : ObjectId("5e5e8c07f995e1718151981c"),
"1" : ObjectId("5e5e8c07f995e1718151981d")
}
}登録結果の確認
find()メソッドを使えば、コレクション内のすべてのドキュメントを表示して結果を確認できます。
> db.demo397.find();
実行すると、次のように登録されたドキュメントが出力されます。
{ "_id" : ObjectId("5e5e8c07f995e1718151981c"), "Name" : "John", "Value1" : 100, "Value2" : 200 }
{ "_id" : ObjectId("5e5e8c07f995e1718151981d"), "Name" : "Bob", "Value1" : 100, "Value2" : 200 }ポイントのまとめ
bulkWrite()を使うと、複数の書き込み操作を一括で実行できるupdateOneとupsert: trueを組み合わせると、「存在すれば更新、存在しなければ挿入」という動作になる- 実行結果には
matchedCountやupsertedCountなどの統計情報が含まれるため、処理内容を簡単に確認できる
-
MongoDBの$or演算子で複数条件に一致するドキュメントを取得する方法
はじめにMongoDBでは、$or演算子を使うことで、複数の条件のうちいずれか1つでも一致したドキュメントを取得できます。本記事では、サンプルコレクションを作成し、$or演算子を用いたOR条件検索の具体的な方法を解説します。サンプルコレクションの作成まず、insertOne()メソッドを使って、demo711というコレクションにドキュメントを挿入していきましょう。> db.demo711.insertOne({Name:"John","Marks":75,Age:21,status:"Active"}); { "
-
MongoDBで$in演算子を使って特定の複数ドキュメントを取得する方法
MongoDBで特定の複数のドキュメントを一度に取得したい場合、$in 演算子を使用します。$in は、指定した配列内のいずれかの値に一致するドキュメントだけを抽出できる便利な比較演算子です。この記事では、実際にコレクションを作成し、$in を使って特定の複数ドキュメントを取得する手順を順番に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使ってサンプル用のコレクション「demo593」にドキュメントを挿入します。> db.demo593.insertOne({id:1,Name:Chris});{ acknowledged : tr