MongoDB でプッシュ配列を更新する

Tahseen Tauseef 2024年2月15日
  1. MongoDB の演算子
  2. MongoDB の$push演算子
  3. MongoDB の配列に要素をプッシュする
  4. MongoDB の配列の先頭に要素をプッシュする
  5. MongoDB の配列の末尾に要素をプッシュする
  6. MongoDB で複数の要素をプッシュする
MongoDB でプッシュ配列を更新する

この教育記事では、さまざまな手法を使用して MongoDB の配列に要素を追加する方法を紹介します。 配列への要素のプッシュまたは追加は、既存の MongoDB ドキュメントでオブジェクトを追加または移動してリストをすばやく追加するのに非常に便利です。

このレッスンでは、push 操作に負の整数と正の整数の両方を使用する方法を説明します。負の整数は、データを配列に入れるための追加の push の可能性を提供します。

前提条件:

  1. MongoDB の配列に要素を追加するには、MongoDB を適切にインストールして構成する必要があります。
  2. 配列がどのように機能するかについての基本的な理解。

まず、この記事の目次を見てみましょう。

  1. MongoDB の演算子
  2. MongoDB の $push 演算子
  3. 要素を配列にプッシュする
  4. 配列の先頭に要素をプッシュする
  5. 配列の最後に要素をプッシュする

MongoDB の演算子

演算子は、数学演算または論理演算の実行方法をコンパイラまたはインタプリタに指示する特別な記号またはキーワードです。 クエリ演算子は、開発者が複雑なクエリを記述してアプリケーションに関連するデータ セットとやり取りできるようにすることで、MongoDB の機能を拡張します。

以下は、MongoDB のさまざまなタイプの演算子です。

  1. クエリおよびプロジェクション オペレータ - クエリ オペレータはデータベース内のデータの検出を支援しますが、プロジェクション オペレータはデータの表示方法を変更します。
  2. 更新オペレーター - 更新オペレーターを使用すると、データベースのデータを変更または追加できます。
  3. アグリゲーション パイプライン ステージ - アグリゲーション パイプラインで利用可能なアグリゲーション ステージ。
  4. 集約パイプライン オペレータ - 集約パイプライン オペレーションには、パイプライン ステージでドキュメントを定義および操作するために使用できる一連のオペレータがあります。
  5. クエリ修飾子 - クエリ修飾子は、クエリの実行方法を決定します。

MongoDB の$push演算子

MongoDB では、$push 演算子を使用して値を配列にアタッチします。 $push オペレーターは update オペレーターです。

指定されたフィールドが変更中のドキュメントにない場合、$push 演算子は、指定された値を要素として持つ新しいフィールドとしてそれを作成します。 更新フィールドが配列型でない場合、操作は失敗しました。

更新時に、値が配列の場合、$push 演算子は配列全体を 1つの要素として追加します。 $push 演算子を $each 修飾子と共に使用して、各値要素を個別に追加します。

構文:

db.collection.update( <query>,{ $push: { <field>: <value> } })

MongoDB $push 演算子の例:

条件 subjectsmaths のときに配列フィールドに 95 を追加したい場合は、以下の MongoDB コマンドを使用できます。

db.student.update( { "subjects" : "maths" },{ $push: { "achieve": 95 } });

前の例で説明した基準がこのアクションに一致するため、値 95 が配列の結果に追加されます。

新しく更新されたドキュメントを表示するには:

db.student.find().pretty();

上記のクエリの出力は、このスクリーンショットで確認できます。

プッシュ演算子を使用

フィールドが配列でない場合の MongoDB $push の例:

配列型フィールドではない sem 列に 2 を追加したい場合は、以下の MongoDB コマンドを使用できます。

db.student.update( { "subjects" : "maths" },{ $push: { "sem": 2 } });

上記の例の sem フィールドは配列型ではないため、操作は失敗し、次の結果が生成されます。

Cannot apply $push/$push All modifier to non-array

MongoDB の配列に要素をプッシュする

このセクションでは、update 操作などの $push 演算子を使用して、要素を配列に追加する方法を示します。

まず、次のように果物を含むサンプル データセットを作成します。

use fruitdb
switched to db fruitdb
db.fruit.insert({
      "_id": "100",
      "fruitArray": ['mango', 'banana', 'orange']
   });
WriteResult({ "nInserted" : 1 })

次のコマンドで挿入プロセスを確認します。

db.fruit.find({_id: "100"});

結果は次のようになります。

MongoDB の配列に要素をプッシュ

fruitArray に別の果物を追加します。 この例では、次のコマンドを実行して pineapple を追加します。

db.fruit.update(
      { "_id": "100" },
      {
          $push: {
              fruitArray: "pineapple"
          }
      }
  );

結果は次のようになります。

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

次のコマンドを実行して、パイナップルが要素として fruitArray に正常に追加されたことを確認します。

db.fruit.find({_id: "100"}).pretty();

出力は次のようになります。

MongoDB 2 で要素を配列にプッシュ

結果は、$push 演算子が単語 pineapplefruitArray の最後に挿入したことを示しています。

MongoDB の配列の先頭に要素をプッシュする

前のセクションでは、配列の先頭に新しい要素を追加する方法について説明しました。 このセクションでは、要素 grapes を配列の先頭に挿入する方法を示します。

このアクションを実行するには、次のコマンドを使用します。

db.fruit.update(
      { "_id": "100" },
      {
          $push: {
              fruitArray: {
                  $each: ['grapes'],
                  $position: 0
              }
          }
      }
  );

次のコマンドは、更新手順が成功したことを確認できます。

db.fruit.find({_id: "100"}).pretty();

出力は次のようになります。

MongoDB の配列の先頭に要素をプッシュ

演算子 $position は前の操作で使用されました。 名前が示すように、このコマンドは、ユーザーが定義したとおりに要素を配列内に配置します。

また、$position 値に使用される正の整数は、配列の左または先頭からプッシュされることに注意してください。

MongoDB の配列の末尾に要素をプッシュする

前のセクションでは、$position 演算子の値として正の整数を使用して、配列の先頭に要素を挿入する方法を示しました。 このパートでは、ここで示されているように、負の整数を値として使用してアイテムをプッシュする方法を説明します。

db. fruit.update(
      { "_id": "100" },
      {
          $push: {
              fruitArray: {
              $each: ['apple'],
              $position: -1
          }
      }
  });

出力は次のようになります。

MongoDB の配列の最後に要素をプッシュ

値に -1 を使用すると、apple は要素リストの最後から 2 番目の位置に配置され、最後の要素は位置 0 になります。

MongoDB で複数の要素をプッシュする

このセクションでは、複数の要素を配列に挿入またはプッシュする方法を示します。

まず、fruit ドキュメント内に別の配列を追加します。

db. fruit.insert({
      "_id": "101",
      "fruitArray": ["strawberry","guava","lemon"]
  });

次の情報を含む新しいドキュメントが生成されます。

MongoDB で複数の要素をプッシュ

次に、次のコマンドを使用して、多数の要素を新しいドキュメントに追加します。

db.fruit.update(
      { "_id": "101" },
      {
          $push: {
              fruitArray: {
                  $each: ['pear', 'cherry', 'lime'],
                  $position: -2
              }
          }
      }
  );

上記のコードでは項目 ['pear', 'cherry', 'lime'] がプッシュされているため、この配列は 1つの要素として表示される場合があります。 これにより、pear が指定された -2 の位置にプッシュまたは移動され、次に cherrylime がこの順序で続きます。

要素は指定された順序で配列に追加されることに注意してください。

この記事では、MongoDB の配列に要素を追加するためのさまざまな方法について説明しました。 最初に、このレッスンでは、update 操作など、$push 演算子を使用して要素を配列に追加する方法を示しました。

次に、サンプル データセットを生成し、要素を配列に挿入し、最後に挿入プロセスをテストする方法を示しました。 この記事では、配列の先頭、中間、末尾に要素をプッシュする方法と、複数の要素をプッシュする方法についても説明しました。

値として負の整数を指定すると要素が配列の末尾にプッシュされますが、正の整数を指定すると配列の左または先頭から要素がプッシュされます。