MongoDBの配列に追加・連結するには?$concatArrays演算子の使い方
MongoDBで配列を追加・連結するには?
MongoDBで配列に別の配列を追加(連結)したい場合には、集計(アグリゲーション)フレームワークの$concatArrays演算子を使用します。$concatArraysは、複数の配列を1つに結合した新しい配列を返す演算子で、MongoDB 3.2以降で利用可能です。
この記事では、実際にコレクションを作成し、「FirstName」と「LastName」という2つの配列フィールドを$concatArraysで連結するまでの手順を、サンプルコードとともに解説します。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成しましょう。
> db.demo435.insertOne({"FirstName":["Chris"],"LastName":["Brown"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719b1bbc41e36cc3cae97")
}
> db.demo435.insertOne({"FirstName":["David"],"LastName":["Miller"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719bdbbc41e36cc3cae98")
}
> db.demo435.insertOne({"FirstName":["John"],"LastName":["Doe"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719c6bbc41e36cc3cae99")
}2. 登録されたドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo435.find().pretty();
上記のコマンドを実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5e7719b1bbc41e36cc3cae97"),
"FirstName" : [
"Chris"
],
"LastName" : [
"Brown"
]
}
{
"_id" : ObjectId("5e7719bdbbc41e36cc3cae98"),
"FirstName" : [
"David"
],
"LastName" : [
"Miller"
]
}
{
"_id" : ObjectId("5e7719c6bbc41e36cc3cae99"),
"FirstName" : [
"John"
],
"LastName" : [
"Doe"
]
}3. $concatArraysで配列を連結する
MongoDBで配列を追加(連結)するためのクエリは以下の通りです。aggregate()メソッド内の$projectステージで、$concatArraysを使って2つの配列フィールドを結合しています。
> db.demo435.aggregate([
{ $project: { FullName: { $concatArrays: [ "$FirstName", "$LastName" ] } } }
])
実行すると、「FullName」という新しいフィールドに、連結された配列が出力されます。
{ "_id" : ObjectId("5e7719b1bbc41e36cc3cae97"), "FullName" : [ "Chris", "Brown" ] }
{ "_id" : ObjectId("5e7719bdbbc41e36cc3cae98"), "FullName" : [ "David", "Miller" ] }
{ "_id" : ObjectId("5e7719c6bbc41e36cc3cae99"), "FullName" : [ "John", "Doe" ] }$concatArrays使用時の注意点
- $concatArraysは集計時に新しい配列を生成するだけで、元のドキュメントは変更されません。
- 引数のいずれかがnull、またはフィールドが存在しない場合、結果はnullになります。
- 既存ドキュメントの配列フィールドそのものに要素を追加・更新したい場合は、update系メソッドの$pushや$addToSet演算子を使用してください。
-
MongoDBで配列の共通部分(交差)データを取得する方法
MongoDBで配列の共通部分を取得するには?MongoDBで配列同士の共通要素(交差)を求めたい場合、集計パイプラインである aggregate() 内で $setIntersection 演算子を使用します。この演算子は、指定した複数の配列に共通して含まれる要素だけを抽出し、重複を除いた配列として返してくれます。それでは、実際にドキュメントを含むコレクションを作成しながら確認していきましょう。1. サンプルコレクションの作成> db.demo625.insertOne( ... { ... Name: "John", ... M
-
MongoDBで配列の要素を削除するには?$pull演算子の使い方を解説
MongoDBで配列から要素を削除する基本MongoDBで配列内の要素を削除したい場合は、$pull演算子を使用します。$pullは、既存の配列から指定した値、または条件に一致するすべてのインスタンスを取り除くための更新演算子です。この記事では、実際にコレクションを作成し、ネストされた配列から特定の要素を削除する手順を順番に解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは「software」フィールドの中に「services」という配列を持つドキュメントを挿入します。db.demo541.insertOne({software:{servic