MongoDB 速習チュートリアル

MongoDB アップデート演算子

MongoDB では、ドキュメントの更新(アップデート)時に使用できる多種多様なアップデート演算子が用意されています。これらを活用することで、ドキュメント全体を置き換えることなく、特定のデータのみを効率的に書き換えることが可能です。

1. フィールド演算子 (Fields)

以下の演算子は、ドキュメント内の個別のフィールドを更新するために使用されます。

演算子説明
$currentDateフィールドの値を現在の日付に設定します(Date 型または Timestamp 型)。
$incフィールドの値を指定した数値分だけ増分(インクリメント)させます。
$renameフィールドの名前を変更します。
$setフィールドに特定の値を設定します。フィールドが存在しない場合は新しく作成されます。
$unsetドキュメントから特定のフィールドを削除します。

1.1 使用例:フィールドの更新

// 例:likes を 1 増やし、更新日時を現在時刻に設定する
db.posts.updateOne(
  { _id: 1 },
  {
    $inc: { likes: 1 },
    $currentDate: { lastModified: true }
  }
)

2. 配列演算子 (Array)

MongoDB の強力な機能の一つである「配列」を効率的に操作するための演算子です。

演算子説明
$addToSet配列に要素を追加します。ただし、すでに対象の要素が存在する場合は追加されません(一意性を保持)。
$pop配列の最初(-1)または最後(1)の要素を削除します。
$pullクエリ条件に一致するすべての要素を配列から削除します。
$push配列に要素を追加します。

2.1 使用例:配列の操作

// 例:tags 配列に新しいタグを追加し、重複は許可しない
db.posts.updateOne(
  { title: "Post Title 1" },
  { $addToSet: { tags: "web_development" } }
)

// 例:comments 配列から特定の条件に合う要素を削除する
db.posts.updateOne(
  { _id: 1 },
  { $pull: { comments: { user: "guest" } } }
)