MongoDBの$push演算子を使って配列に値を手動で追加する方法
MongoDBでは、既存のドキュメント内にある配列フィールドへ新しい要素を追加したい場合、$push 演算子を使用します。本記事では、実際のコード例を通じて、$push を使った値の手動追加の手順をわかりやすく解説します。
1. コレクションとドキュメントの作成
まずは、サンプルとなるコレクションを作成し、ドキュメントを挿入してみましょう。以下のように insert() メソッドを使用します。
> db.demo585.insert({
... firstName: 'John',
... lastName: 'Doe',
... SubjectName:"MongoDB",
... Marks: [59]
... });
WriteResult({ "nInserted" : 1 })
> db.demo585.insert({
... firstName: 'Chris',
... lastName: 'Brown',
... SubjectName:"MySQL",
... Marks: [79]
... });
WriteResult({ "nInserted" : 1 })上記のコードでは、2件のドキュメントを挿入しています。それぞれ「氏名」「科目名」「点数(Marks)」というフィールドを持ち、Marks は配列形式になっている点に注目してください。
2. find()メソッドで全ドキュメントを表示する
挿入したドキュメントを確認するには、find() メソッドを使用します。
> db.demo585.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e91fd80fd2d90c177b5bcc3"), "firstName" : "John", "lastName" : "Doe", "SubjectName" : "MongoDB", "Marks" : [ 59 ] }
{ "_id" : ObjectId("5e91fd81fd2d90c177b5bcc4"), "firstName" : "Chris", "lastName" : "Brown", "SubjectName" : "MySQL", "Marks" : [ 79 ] }3. $pushを使って配列に新しい値を追加する
ここからが本題です。特定の条件に一致するドキュメントを指定し、その配列フィールドに対して $push 演算子で新しい値(オブジェクト)を追加します。
> db.demo585.update({
... firstName: 'John',
... lastName: 'Doe',
... SubjectName:"MongoDB",
... Marks: [59]
... },
... {
... "$push": {
... "Marks": {
... "Value": 59,
... "Times": 3
... }
... }
... }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })このクエリでは、update() の第一引数で更新対象のドキュメントを特定し、第二引数の $push 内で Marks 配列に「Value」と「Times」というキーを持つオブジェクトを追加しています。
ポイント: $push は既存の配列の末尾に要素を追加します。もし重複を避けたい場合は、代わりに $addToSet 演算子を使用するとよいでしょう。
4. 更新結果の確認
再度 find() メソッドを実行して、更新後のドキュメントを確認してみましょう。
> db.demo585.find();
以下の出力から、John Doe のドキュメントの Marks 配列に、新しいオブジェクトが正常に追加されていることがわかります。
{ "_id" : ObjectId("5e91fd80fd2d90c177b5bcc3"), "firstName" : "John", "lastName" : "Doe", "SubjectName" : "MongoDB", "Marks" :
[ 59, { "Value" : 59, "Times" : 3 }
] }
{ "_id" : ObjectId("5e91fd81fd2d90c177b5bcc4"), "firstName" : "Chris", "lastName" : "Brown", "SubjectName" : "MySQL", "Marks" : [ 79 ] }まとめ
MongoDBの $push 演算子を使えば、配列フィールドに対して数値や文字列だけでなく、オブジェクトなども柔軟に追加できます。参照するキーと値のペアを組み合わせることで、履歴データや複雑な構造のデータ管理にも活用できるため、ぜひ覚えておきましょう。
-
Node.jsとMongoDBで作るサインアップフォームの実装ガイド
この記事では、名前・メールアドレス・パスワード・電話番号などの入力項目を持つシンプルなユーザーサインアップフォームを作成します。「送信」ボタンをクリックすると、入力されたすべてのユーザー情報がMongoDBデータベースに保存される仕組みです。Node.jsによるWebアプリケーション開発の入門として、ぜひ参考にしてください。必要なパッケージのインストールサインアップフォームを作成する前に、以下の依存パッケージがシステムに正しくインストールされていることを確認しましょう。まずはexpressをインストールします。ExpressはHTTPリクエストに応答するためのミドルウェアを設定するために使用さ
-
C#のHybridDictionaryに指定したキーと値を追加する方法
C#のHybridDictionaryは、System.Collections.Specialized名前空間に属するコレクションクラスです。要素数が少ない間はListDictionaryとして動作し、規模が大きくなると自動的にHashtableへ切り替わるため、サイズが事前に分からないデータを扱う際に効率的です。 指定したキーと値をHybridDictionaryに追加するには、Addメソッドを使用します。なお、すでに存在するキーを追加しようとするとArgumentExceptionがスローされる点に注意してください。 例1:Addメソッドでキーと値を追加する using System;