MongoDBの$push演算子を使って配列に要素を追加する方法
MongoDBの$push演算子とは
MongoDBの$push演算子は、ドキュメント内の配列フィールドに対して新しい要素を追加するための更新演算子です。既存の配列の末尾に値を追加できるため、リスト形式のデータを扱う際に非常に便利です。
この記事では、実際のコード例を通して、$push演算子の基本的な使い方を解説します。
1. コレクションとドキュメントを作成する
まず、insertOne()メソッドを使用して、コレクションにドキュメントを挿入します。ここでは「Subjects」という配列フィールドを持つ2つのドキュメントを作成します。
> db.demo738.insertOne({Subjects:["C","C++"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead696557bb72a10bcf0661")
}
> db.demo738.insertOne({Subjects:["MySQL","PL/SQL"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead696657bb72a10bcf0662")
}2. find()メソッドですべてのドキュメントを表示する
find()メソッドを使うと、コレクション内のすべてのドキュメントを確認できます。
> db.demo738.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5ead696557bb72a10bcf0661"), "Subjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5ead696657bb72a10bcf0662"), "Subjects" : [ "MySQL", "PL/SQL" ] }3. $push演算子で配列に要素を追加する
次に、update()メソッドと$push演算子を組み合わせて、特定のドキュメントの配列に新しい要素「MongoDB」を追加します。対象のドキュメントは_idで指定します。
>db.demo738.update({_id:ObjectId("5ead696657bb72a10bcf0662")},{$push:{"Subjects":"MongoDB"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })実行結果の「nModified : 1」は、1件のドキュメントが正常に更新されたことを示しています。
4. 更新後の結果を確認する
再度find()メソッドを実行して、更新結果を確認しましょう。
> db.demo738.find();
出力は以下のようになります。「MongoDB」が配列の末尾に追加されていることがわかります。
{ "_id" : ObjectId("5ead696557bb72a10bcf0661"), "Subjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5ead696657bb72a10bcf0662"), "Subjects" : [ "MySQL", "PL/SQL", "MongoDB" ] }まとめ
$push演算子を使えば、MongoDBの配列フィールドに簡単に要素を追加できます。なお、指定した_idのドキュメントが存在しない場合に新規作成したい場合は、upsertオプションを活用することも可能です。また、重複を避けたい場合は$addToSet演算子の使用も検討するとよいでしょう。
-
MongoDBで配列フィールドに対して$allを使って全要素に一致させる方法
配列フィールドの全要素に一致させるには MongoDBで配列内のすべての指定要素を含むドキュメントを検索したい場合には、$all 演算子を使用します。$all は、対象フィールドの値が配列であり、その配列が指定した要素をすべて含んでいるドキュメントだけを選択するクエリ演算子です。 ここでは、サンプルコレクションを作成し、実際に $all を使った検索手順を順番に見ていきましょう。 1. コレクションへのドキュメント登録 まずは insertOne() メソッドを使って、サンプルコレクション「demo695」にドキュメントを挿入します。 > db.demo695.insertOne({L
-
MongoDBで条件付きの文字列連結を行う方法($condと$concatの使い方)
MongoDBで条件付きの文字列連結を実現する方法 MongoDBでは、$cond演算子の中で$concatを組み合わせることで、条件に基づいた文字列の連結とドキュメントのフィルタリングが可能です。本記事では、実際のコード例を通じて、その実装手順をわかりやすく解説します。 サンプルコレクションの作成 まず、ドキュメントを格納するコレクションを作成します。insertOne()メソッドを使って、3件のドキュメントを挿入してみましょう。 > db.demo745.insertOne({Value1:100,Value2:100}); { acknowledged : true,