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

MongoDBで既存の配列に要素を追加する方法($addToSet演算子の使い方)

MongoDBで既存の配列に新しい要素を追加するには、update()メソッドと組み合わせて$addToSet演算子を使用します。$addToSetは、指定した値が配列内に存在しない場合のみ追加するため、重複を防ぎながら安全に要素を追加できるのが特徴です。

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

まず、ドキュメントを含むコレクションを作成しましょう。以下のコマンドを実行します。

> db.pushElements.insertOne({"Comments":["Good","Awesome","Nice"]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd682597924bb85b3f48953")
}

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

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

> db.pushElements.find().pretty();

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

{
    "_id" : ObjectId("5cd682597924bb85b3f48953"),
    "Comments" : [
        "Good",
        "Awesome",
        "Nice"
    ]
}

3. $addToSetを使って配列に要素を追加する

それでは、既存の配列に新しい要素「Cool」を追加してみましょう。以下のようにupdate()メソッドと$addToSet演算子を組み合わせてクエリを実行します。

> db.pushElements.update(
    {_id:ObjectId("5cd682597924bb85b3f48953")},
    { "$addToSet":{"Comments":"Cool"} },
    upsert=true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

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

もう一度find()メソッドを実行して、ドキュメントが正しく更新されたか確認しましょう。

> db.pushElements.find().pretty();

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

{
    "_id" : ObjectId("5cd682597924bb85b3f48953"),
    "Comments" : [
        "Good",
        "Awesome",
        "Nice",
        "Cool"
    ]
}

このように、「Cool」が配列の末尾に追加されていることがわかります。

$addToSetと$pushの違い

なお、MongoDBには配列への要素追加に使える$push演算子もあります。両者の主な違いは以下のとおりです。

  • $addToSet:同じ値がすでに配列内に存在する場合は追加しない(重複防止)
  • $push:重複があってもそのまま配列の末尾に追加する

重複したデータを避けたい場合は$addToSetを、意図的に同じ値を複数回追加したい場合は$pushを選択するとよいでしょう。

  1. MongoDBアグリゲーションで配列内の要素サブセットを合計する方法

    MongoDBのアグリゲーションパイプラインを使用して、配列内の一部の要素(サブセット)を合計したい場合があります。そんなときは、$first演算子と$sum演算子を組み合わせることで実現できます。この記事では、実際のコレクションを作成しながら、具体的な手順をサンプルコード付きでわかりやすく解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。以下の例では、数値の配列「Values」を持つドキュメントをinsertOne()メソッドで挿入しています。> db.demo610.insertOne({Values:[10,20,30,40,50]}

  2. C#の既存ジャグ配列に要素を追加する方法

    C#において、既存のジャグ配列(Jagged Array:配列の配列)に要素を追加・更新するのはとても簡単です。対象となるインデックスを指定し、そこに新しい値を代入するだけで完了します。 例えば、次の位置にある要素に新しい値を設定したいケースを考えてみましょう。 x[3][1] この場合、以下のように値を代入します。 x[3][1] = 500; 上記のコードでは、ジャグ配列内の4番目の配列(インデックス3)が持つ2番目の要素(インデックス1)にアクセスし、値を書き換えています。 サンプルコード それでは、ジャグ配列の宣言から要素の更新、そして結果の表示までを行う完全なサンプルコードを見てみま