MongoDBの$concatArrays演算子を使って配列を連結する方法
MongoDBで配列を連結(結合)するには、$concatArrays演算子を使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。
> db.arrayConcatenationDemo.insertOne({"TeacherName":["Chris","Robert"],"StudentName":["Mike","Sam"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ce921c078f00858fb12e911")
}
コレクション内の全ドキュメントを表示する
find()メソッドを使って、コレクション内のすべてのドキュメントを表示するクエリは以下の通りです。
> db.arrayConcatenationDemo.find().pretty();
上記のクエリを実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5ce921c078f00858fb12e911"),
"TeacherName" : [
"Chris",
"Robert"
],
"StudentName" : [
"Mike",
"Sam"
]
}
$concatArrays演算子で配列を連結する
実際に配列を連結するには、aggregate()メソッドの中で$projectステージと$concatArrays演算子を組み合わせます。以下のクエリでは、「TeacherName」フィールドと「StudentName」フィールドを連結し、新しいフィールド「StudentAndTeacherName」として出力しています。
> db.arrayConcatenationDemo.aggregate([
{ "$project": {
"StudentAndTeacherName": { "$concatArrays": [ "$TeacherName", "$StudentName" ] }
}}
]);
このクエリを実行すると、2つの配列が1つに結合され、次のような出力が得られます。
{ "_id" : ObjectId("5ce921c078f00858fb12e911"), "StudentAndTeacherName" : [ "Chris", "Robert", "Mike", "Sam" ] }
$concatArrays演算子のポイント
- $concatArraysは2つ以上の配列を引数として受け取り、それらを順番に連結した1つの配列を返します。
- 引数のいずれかがnull、または存在しないフィールドである場合、結果はnullになります。
- 引数に配列以外の値を指定するとエラーが発生するため、事前にデータ型を確認しておきましょう。
-
MongoDBでサブドキュメントの配列をクエリする方法
MongoDBでサブドキュメントの配列をクエリするには、集計パイプラインの$unwindを使用します。$unwindは、配列フィールドを展開し、配列の各要素ごとに個別のドキュメントを生成するステージです。これにより、配列内のサブドキュメントを個別にフィルタリングできるようになります。ここでは、大学の情報を含むコレクションを作成し、その中から特定の条件に一致するサブドキュメントを抽出する手順を解説します。コレクションの作成まず、insertOne()メソッドを使って、サブドキュメントの配列を含むドキュメントを挿入しましょう。> db.demo499.insertOne({... "
-
MongoDBで一括挿入(バルクインサート)を実行する方法
MongoDBで多数のドキュメントをまとめて登録したい場合、一括挿入(バルクインサート)を利用すると効率的です。一括挿入を実行するには、initializeUnorderedBulkOp()メソッドを使用します。 一括挿入の手順 まず、initializeUnorderedBulkOp()でバルク操作のオブジェクトを作成し、insert()メソッドで複数のドキュメントを追加していきます。最後にexecute()を呼び出すことで、まとめてデータベースに書き込まれます。 > var bulkInsertDoc = db.demo663.initializeUnorderedBulkOp