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

Update Documents

MongoDB shell は、コレクション内のドキュメントを更新するために次のメソッドを提供します。

このページの例は、MongoDB サンプルデータセットを参照しています。配置の設定とクラスターにサンプルデータを入力する方法については、「MongoDB スタートガイド」をご覧ください。

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

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

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

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

db.collection.updateOne()メソッドを使用して、指定フィルターに一致する 最初のドキュメントを更新します。

注意

MongoDB はドキュメントの自然なソート順序を保持します。この順序付けは内部実装機能であり、その中の特定の構造を前提にしないようにしてください。詳細については、「自然な順序」を参照してください。

例

sample_mflix.movies コレクション内で、title が "Twilight" と等しい最初のドキュメントを更新するには、次の操作を実行します。

use sample_mflix
db.movies.updateOne( { title: "Twilight" },
{
$set: {
plot: "A teenage girl risks everything–including her life–when she falls in love with a vampire."
},
$currentDate: { lastUpdated: true }
})

アップデートの操作:

  • $set演算子を使用して、映画「11」のplot Twilightフィールドの値を更新します。

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

db.collection.updateMany()を使用して、指定フィルターに一致するすべてのドキュメントを更新します。

例

security_deposit が100 未満の場合に、sample_airbnb.listingsAndReviews コレクション内のすべてのドキュメントを更新するには、次の操作を実行します。

use sample_airbnb
db.listingsAndReviews.updateMany(
{ security_deposit: { $lt: 100 } },
{
$set: { security_deposit: 100, minimum_nights: 1 }
}
)

更新操作では、 演算子を使用して、$set フィールドの値をsecurity_deposit に更新し、100 フィールドの値をminimum_nights 1に更新します。

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

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

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

例

account_id: 371138 のsample_analytics.accounts コレクションの最初のドキュメントを置き換えるには、次の操作を実行します。

db.accounts.replaceOne(
{ account_id: 371138 },
{ account_id: 893421, limit: 5000, products: [ "Investment", "Brokerage" ] }
)

更新されたドキュメントを読み取るには、次のコマンドを実行します。

db.accounts.findOne( { account_id: 893421 } )

ドキュメント更新の具体的な動作の詳細については、「動作」を参照してください。

  • 集計パイプラインを使用してドキュメントを更新する方法については、「集計パイプラインによる更新」を参照してください。

  • ドキュメントの更新に利用可能なすべての方法を確認するには、「更新方法」を参照してください。