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" } } }
)