Docs Menu
Docs Home
/
MongoDB Shell
/

Update Documents

項目一覧

  • 更新演算子構文
  • 単一ドキュメントの更新
  • 複数のドキュメントの更新
  • ドキュメントの置き換え
  • 更新動作
  • 詳細

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

このページの例は、Atlas サンプル データセットを参照しています。無料の MongoDB Atlas クラスターを作成し、そのクラスターにサンプル データを入力して、以下の例に従うことができます。詳細については、「Atlas スタートガイド」を参照してください。

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 演算子を使用して、映画「Twilight」の plot フィールドの値を更新します。

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

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

security_deposit100 未満の場合に、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: 371138sample_analytics.accounts コレクションの最初のドキュメントを置き換えるには、次の操作を実行します。

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

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

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

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

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

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

戻る

読み取り