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

MongoDBの$pushを使って1対多の埋め込みドキュメントにエントリを追加する方法

MongoDBでは、配列型のフィールド(1対多の関係を持つ埋め込みドキュメント)に新しいエントリを追加したい場合、更新演算子 $push を使用します。この記事では、実際のコード例を通じて、$pushによる配列への要素追加の手順をわかりやすく解説します。

1. サンプルコレクションの作成

まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成します。ここでは「details」という配列フィールドを持つドキュメントを登録します。

> db.demo253.insertOne(
...   {
...      _id: "101",
...      isActive: false,
...      details: [
...         {
...            Name: "Chris",
...         },
...         {
...            CountryName:"US"
...         }
...      ]
...   }
...);
{ "acknowledged" : true, "insertedId" : "101" }

「acknowledged : true」が返されれば、ドキュメントの挿入は成功しています。

2. 登録したドキュメントの確認

find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo253.find();

実行すると、次のような出力が得られます。

{ "_id" : "101", "isActive" : false, "details" : [ { "Name" : "Chris" }, { "CountryName" : "US" } ] }

現時点では、「details」配列には「Name: Chris」と「CountryName: US」の2つの要素が格納されています。

3. $pushで新しいエントリを追加する

続いて、1対多の埋め込みドキュメント(details配列)に新しいエントリを追加するクエリを実行します。update() メソッドと $push 演算子を組み合わせることで、既存の配列の末尾に要素を追加できます。

> db.demo253.update({_id: '101'}, {$push: {details: {Age: 21}}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

出力結果の「nModified : 1」は、1件のドキュメントが正常に更新されたことを示しています。

4. 更新後のドキュメントを確認する

再度 find() メソッドを実行して、更新結果を確認しましょう。

> db.demo253.find();

実行結果は以下の通りです。

{ "_id" : "101", "isActive" : false, "details" : [ { "Name" : "Chris" }, { "CountryName" : "US" }, { "Age" : 21 } ] }

このように、「details」配列の末尾に「Age: 21」という新しいエントリが追加されたことが確認できます。

まとめ

MongoDBで配列形式の埋め込みドキュメントに要素を追加するには、update() メソッドと $push 演算子を組み合わせるのが基本です。なお、MongoDBの最新バージョンでは updateOne() や updateMany() の使用が推奨されているため、実務では db.collection.updateOne({_id: '101'}, {$push: {details: {Age: 21}}}) のように記述するとより安全です。また、条件に一致するドキュメントが存在しない場合に新規作成したい場合は、upsertオプションとの併用も検討してみてください。

  1. MongoDBのaggregate()で3階層にネストされた埋め込みドキュメントの配列をフィルタリングする方法

    MongoDBでネストされた配列をフィルタリングする基本アプローチMongoDBで3階層にネストされた埋め込みドキュメントの配列をフィルタリングするには、aggregate()メソッドを使用します。集計パイプラインの中で$unwindによって配列を展開し、$matchで条件に一致するドキュメントを絞り込むのが基本的な流れです。この記事では、実際のコード例を通じて具体的な手順を解説します。1. サンプルコレクションの作成まずは動作確認用のコレクションを作成し、ドキュメントを挿入してみましょう。> db.demo736.insertOne( ... { ... _id:

  2. MongoDBで1つのクエリを使って複数のドキュメントを一括更新する方法(bulkWrite活用ガイド)

    MongoDBで1つのクエリで複数のドキュメントを更新するには?MongoDBで1回のリクエスト(1つのクエリ)で複数のドキュメントを効率的に更新したい場合は、bulkWrite()メソッドを使用します。bulkWrite()は、複数の書き込み操作(insert、update、deleteなど)をまとめてサーバーに送信できるため、個別にクエリを発行するよりもパフォーマンス面で優れています。ここでは、updateOne操作を組み合わせて、複数のドキュメントのフィールドを一度に更新する手順を具体的に解説します。1. コレクションの作成とドキュメントの挿入まず、insertOne()メソッドを使って