updateOne を使用した単一ドキュメントの更新
このステップでは、MongoDB コレクション内の単一ドキュメントを変更する方法を学びます。updateOne() メソッドと $set 演算子を組み合わせて、特定のドキュメントのフィールド値を変更します。
まず、MongoDB シェルを開いてデータベースにアクセスします。
mongosh
シェルに入ったら、準備された mylab_database に切り替えます。
use mylab_database
books コレクション内の現在のドキュメントを表示しましょう。.pretty() メソッドは、出力をより読みやすくフォーマットします。
db.books.find().pretty();
3 つの初期の書籍ドキュメントが表示されるはずです。_id の値は、お使いの環境で一意になります。
[
{
_id: ObjectId("..."),
title: 'JavaScript Fundamentals',
author: 'Mike Johnson',
year: 2022,
pages: 350
},
{
_id: ObjectId("..."),
title: 'Python Deep Dive',
author: 'Sarah Williams',
year: 2021,
pages: 450
},
{
_id: ObjectId("..."),
title: 'Machine Learning Basics',
author: 'John Doe',
year: 2020,
price: 39.99
}
]
次に、「JavaScript Fundamentals」というタイトルの書籍の出版年を 2023 に更新しましょう。
db.books.updateOne(
{ title: "JavaScript Fundamentals" },
{ $set: { year: 2023 } }
);
このコマンドの内訳を見てみましょう。
updateOne(): このメソッドは、フィルターに一致する最初のドキュメントを見つけて更新します。
{ title: "JavaScript Fundamentals" }: これはフィルタードキュメントです。MongoDB に対して、title フィールドが "JavaScript Fundamentals" であるドキュメントを見つけるように指示します。
{ $set: { year: 2023 } }: これは更新ドキュメントです。$set 演算子は、year フィールドの値を 2023 に置き換えます。
コマンドは、操作を確認する結果オブジェクトを返します。
{
"acknowledged": true,
"insertedId": null,
"matchedCount": 1,
"modifiedCount": 1,
"upsertedCount": 0
}
matchedCount: 1 はフィルターに一致したドキュメントが 1 つあったことを示し、modifiedCount: 1 はドキュメントが 1 つ正常に更新されたことを示しています。
変更を確認するために、再度ドキュメントを検索します。
db.books.findOne({ title: "JavaScript Fundamentals" });
出力には、新しい年で更新されたドキュメントが表示されます。
{
_id: ObjectId("..."),
title: 'JavaScript Fundamentals',
author: 'Mike Johnson',
year: 2023,
pages: 350
}