AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

Update Documents

MongoDB では、更新操作は 1 つ以上のドキュメントでのフィールドの追加、除く、または変更で構成されます。このページでは例を示しています。

次の方法を使用して、MongoDB 内のドキュメントを更新できます。


➤ 右上の言語の選択ドロップダウンメニューを使用して、以下の例の言語を設定します。


次の例では、sample_mflixデータベースの moviesコレクションを使用します。サンプルデータセットを配置にロードする方法について詳しくは、サンプル データのロード を参照してください。

ドキュメントを更新するために、 MongoDB はフィールド値を変更するための フィールド更新演算子 を提供します。例えば、$set などです。

更新演算子を使用するには、次の形式の更新ドキュメントを更新メソッドに渡します。

{ <update operator>: { <field1>: <value1>, ... }, <update operator>: { <field2>: <value2>, ... }, ...}

$setなどの一部の更新演算子は、フィールドがない場合にフィールドを作成します。 詳細については、個々の更新演算子のリファレンスを参照してください。

次の例えでは movies コレクションの db.collection.updateOne() メソッドを使用して、title が "The Godfather" に等しい最初のドキュメントをアップデートします。

db.movies.updateOne( { title: "The Godfather" }, { $set: { rated: "PG", "tomatoes.viewer.rating": 4.5 }, $currentDate: { lastupdated: true } })

アップデートの操作:

  • $set 演算子を使用して size.uom フィールドの値を "cm" に、status フィールドの値を "P" にアップデートします。

  • $currentDate 演算子を使用して lastModified フィールドの値を現在の日付にアップデートします。lastModified フィールドが存在しない場合、$currentDate はそのフィールドを作成します。詳細については $currentDate を参照してください。

次の例ではdb.collection.updateMany()メソッドを使用して、moviesコレクションのnum_mflix_commentsが100より大きいすべてのドキュメントを更新します。

db.movies.updateMany( { "num_mflix_comments": { $gt: 100 } }, { $set: { popular: true }, $currentDate: { lastupdated: true } })

_id フィールドを除くドキュメントのコンテンツ全体を置き換えるには、完全に新しいドキュメントを db.collection.replaceOne() の 2 番目の引数として渡します。

ドキュメントを置き換える場合、置き換えドキュメントはフィールドと値のペアのみで構成される必要があります。 置き換えドキュメントには更新演算子の式を含めることはできません。

置き換えドキュメントには、元のドキュメントとは異なるフィールドを含めることができます。 置き換えドキュメントでは、 _idフィールドが不変であるため、 _idフィールドを省略できます。 ただし、 _idフィールドを含める場合は、現在値と同じ値である必要があります。

次の例えでは title: "The Godfather" の movies コレクションにある最初のドキュメントを置き換えます。

db.movies.replaceOne( { title: "The Godfather" }, { title: "The Godfather", plot: "Updated plot summary", year: 1972, rated: "R", runtime: 175 })

注意

MongoDB Atlas UI では一度にアップデートできるドキュメントは 1 つだけです。 複数のドキュメントを更新したり、ドキュメント全体を置き換えたりするには、 mongoshまたは MongoDB ドライバーから Atlas 配置に接続し、希望メソッドのこのページの例に従います。

このセクションの例では、サブライ データセットのサンプルを使用します。サンプル データセットを MongoDB Atlas デプロイにロードする方法について詳しくは、「サンプル データのロード」を参照してください。

MongoDB Atlas でドキュメントを更新するには、次の手順に従います。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。

  3. サイドバーで、 Database見出しの下のClustersをクリックします。

    [ Clusters (クラスター) ] ページが表示されます。

2
  1. サンプル データを含むクラスターで、[ Browse Collections ] をクリックします。

  2. 左側のナビゲーション ペインで、sample_supplies データベースを選択します。

  3. sales コレクションを選択します。

3

Filter フィールドにクエリフィルター ドキュメントを指定できます。クエリフィルター ドキュメントは、クエリ演算子を使用して検索条件を指定します。

次のクエリフィルター ドキュメントを [Filter] 検索バーにコピーし、[Apply] をクリックします。

{ saleDate: { $gte: { $date: "2016-01-01T00:00-00:00" }, $lte: { $date: "2016-01-02T00:00-00:00" } } }

このクエリフィルターは、sample_supplies.sales コレクション内のドキュメントで、saleDate が 2016 年 1 月 1 日から 2 日(UTC 時間)の間のものをすべて返します。

4

クエリ結果に表示されたドキュメントを編集するには、ドキュメントにカーソルを合わせ、鉛筆アイコンをクリックします。ドキュメント エディターでは、次のことができます。

  • 新しいフィールドを追加

  • 既存のフィールドを削除

  • フィールドの名前、値、型を編集

  • 特定の変更を元に戻す

詳細な手順については、ドキュメント「ドキュメントの作成、表示、アップデート、削除」を参照してください。

5

変更を確定して保存するには、[Update] ボタンをクリックします。

MongoDB のすべての書込み (write) 操作は、単一のドキュメントのレベルでアトミックです。MongoDB とアトミック性の詳細については、「アトミシティとトランザクション」を参照してください。

一度設定すると、_id フィールドの値を更新したり、既存のドキュメントを異なる _id フィールド値を持つ代替ドキュメントに置き換えたりすることはできません。

updateMany()メソッドは冪等操作のみに使用します。

MongoDB は次のケースを除き、書込み操作でドキュメントのフィールド順序を維持します。

  • _id フィールドは常にドキュメントの最初のフィールドとなります。

  • 更新にフィールド名 renaming が含まれる場合、ドキュメント内のフィールド順序が変更されることがあります。

updateOne()、updateMany()、または replaceOne() に upsert : true が含まれており、かつ、指定されたフィルターに一致するドキュメントがない場合、操作は新しいドキュメントを作成し、挿入します。一致するドキュメントがある場合、操作は一致する 1 つまたは複数のドキュメントを変更または置換します。

作成された新しいドキュメントの詳細については、メソッドの個々のリファレンスページを参照してください。

書込み保証 (write concern) では、書込み操作に対して MongoDB から要求される確認応答のレベルを指定できます。詳細については、「書込み保証 (write concern)」を参照してください。

言語の選択
このページを評価