【ITニュース解説】Hands-On MongoDB CRUD Operations with a College Student Schema
2025年10月04日に「Dev.to」が公開したITニュース「Hands-On MongoDB CRUD Operations with a College Student Schema」について初心者にもわかりやすく解説しています。
ITニュース概要
MongoDBはJSON形式データを柔軟に扱うNoSQLデータベースだ。この記事では、大学生のデータを用いて、データの作成(Create)・読み出し(Read)・更新(Update)・削除(Delete)という基本的なCRUD操作を実践的に解説している。直感的な操作でデータ管理ができることを示す。
ITニュース解説
システムエンジニアを目指す皆さんにとって、データベースの知識と操作スキルは非常に重要だ。特に現代のITシステムでは、様々な種類のデータベースが活用されている。その中でも「MongoDB」は、柔軟性と高速性から多くの開発現場で選ばれている人気のデータベースの一つだ。ここでは、MongoDBを使った基本的なデータ操作、通称「CRUD(クラッド)操作」について、学生データ管理システムを例に詳しく解説する。
まず、MongoDBがどのようなデータベースなのかを簡単に説明する。MongoDBは「NoSQLデータベース」と呼ばれる種類に属する。従来のデータベースが表(テーブル)と行(レコード)でデータを管理するのに対し、MongoDBは「ドキュメント」と呼ばれるJSONライクな形式でデータを保存する。このドキュメント形式は、柔軟なデータ構造を持つため、項目の追加や変更がしやすく、複雑なデータを扱いやすいという特徴がある。例えば、学生のデータであれば、名前、年齢、学部、学年、GPAといった情報を一つのドキュメントとしてまとめて管理できる。
CRUD操作とは、データベースでデータを扱う上での基本中の基本となる4つの操作の頭文字を取ったものだ。具体的には、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)を指す。これらの操作を理解し、実際に手を動かすことで、データベースの仕組みやデータ管理の基礎がしっかりと身につく。
それでは、具体的なCRUD操作を見ていこう。
Create(作成、またはInsert)
データを作成する操作は「インサート(挿入)」とも呼ばれる。MongoDBでは、insertManyなどのコマンドを使って、新しいデータをデータベースに追加する。
例として、studentsというコレクション(MongoDBにおけるデータの集まりで、リレーショナルデータベースのテーブルに相当する)に学生のデータを追加してみよう。
1{ 2 "student_id": "S001", 3 "name": "Soniya", 4 "age": 20, 5 "department": "CSBS", 6 "year": 2, 7 "cgpa": 9 8}
このような形式のデータを、まとめて5人分追加するコマンドは以下のようになる。
db.students.insertMany([ ... ])
このコマンドは、dbオブジェクトを通じてstudentsコレクションにアクセスし、複数のドキュメントを一括で挿入するinsertManyメソッドを呼び出している。角括弧[]の中に、JSON形式で記述された各学生のデータ(ドキュメント)をカンマで区切って記述することで、一度に多くのデータを効率よく追加できる。student_idは学生を一意に識別するためのID、nameは名前、ageは年齢、departmentは学部、yearは学年、cgpaは成績評価値を示している。
Read(読み取り、またはQuery)
データを作成したら、次はそのデータを読み取って確認する操作が必要だ。これは「クエリ(問い合わせ)」とも呼ばれる。MongoDBではfind()コマンドを使ってデータを検索する。
すべての学生レコードを表示するには、次のように記述する。
db.students.find().pretty();
find()メソッドは、条件を指定しない場合、studentsコレクション内のすべてのドキュメントを取得する。そして、その後ろに続く.pretty()は、取得したデータを人間が読みやすいように整形して表示してくれる便利なオプションだ。
特定の条件に合う学生を探すことももちろん可能だ。例えば、CGPAが8より大きい学生を探したい場合は、次のように条件を指定する。
db.students.find({ cgpa: { $gt: 8 } }).pretty();
この場合、{ cgpa: { $gt: 8 } }が検索条件となる。$gtは「greater than」(〜より大きい)を意味するMongoDBの比較演算子だ。同様に、「CSBS」学部の学生だけを探す場合は、{ department: "CSBS" }という条件を指定すればよい。このように、検索条件をJSON形式で記述することで、柔軟なデータ検索が行える。
Update(更新)
既存のデータの情報が変更された場合、そのデータを更新する必要がある。これは「アップデート」と呼ばれる。MongoDBではupdateOneやupdateManyなどのコマンドを使う。
特定の学生のCGPAを更新する例を見てみよう。例えば、student_idが"S002"の学生のCGPAを8.5から8.8に更新したいとする。
db.students.updateOne( { student_id: "S002" }, { $set: { cgpa: 8.8 } } );
このコマンドは、updateOneメソッドを使って、最初の引数{ student_id: "S002" }で更新対象のドキュメントを特定し、2番目の引数{ $set: { cgpa: 8.8 } }で更新内容を指定している。$set演算子は、指定したフィールドの値を新しい値に設定する際に使用する。
また、複数のドキュメントを一括で更新することも可能だ。例えば、すべての3年生の学年を1つ増やす(つまり4年生にする)場合は、次のようにする。
db.students.updateMany( { year: 3 }, { $inc: { year: 1 } } );
updateManyメソッドは、最初の引数{ year: 3 }で学年が3であるすべての学生を対象とし、2番目の引数{ $inc: { year: 1 } }で更新内容を指定している。$inc演算子は、「increment」(増やす)の意味で、指定したフィールドの値を指定した量だけ増減させることができる。この場合、yearフィールドの値を1だけ増やしている。
Delete(削除)
不要になったデータはデータベースから削除する必要がある。これは「デリート」と呼ばれる。MongoDBではdeleteOneやdeleteManyなどのコマンドを使う。
特定の学生のレコードを削除する例を見てみよう。例えば、student_idが"S005"の学生を削除したい場合だ。
db.students.deleteOne({ student_id: "S005" });
deleteOneメソッドは、引数{ student_id: "S005" }で指定された条件に一致する最初のドキュメントを削除する。
特定の条件に合う複数の学生をまとめて削除することも可能だ。例えば、CGPAが7.5未満のすべての学生を削除したい場合は、次のようにする。
db.students.deleteMany({ cgpa: { $lt: 7.5 } });
deleteManyメソッドは、引数{ cgpa: { $lt: 7.5 } }で指定された条件に一致するすべてのドキュメントを削除する。$ltは「less than」(〜より小さい)を意味する比較演算子だ。
以上のCRUD操作は、MongoDBだけでなく、あらゆるデータベース操作の基礎となる重要な概念だ。MongoDBは、JSONライクなドキュメント構造を持つため、これらのCRUD操作を非常に直感的かつ柔軟に行うことができる。学生管理システムのようなアプリケーションにおいて、生徒の登録、成績の確認、学年の更新、退学者の削除といった一連のデータ管理作業は、まさにここで解説したCRUD操作の組み合わせで実現されている。システムエンジニアとして、このようなデータベースの基本操作をしっかりと身につけることは、将来のシステム開発において不可欠なスキルとなるだろう。MongoDBの柔軟なデータモデルと、直感的なコマンドは、初心者にとっても学習しやすい特徴を持っている。ぜひ実際に手を動かして、その強力さを体験してみてほしい。