【ITニュース解説】CRUD OPERATIONS
2025年09月29日に「Dev.to」が公開したITニュース「CRUD OPERATIONS」について初心者にもわかりやすく解説しています。
ITニュース概要
MongoDBでのCRUD操作(作成・読み込み・更新・削除)を、学生データ管理の具体例で学ぶ記事。データ登録、検索、変更、削除の各操作をコマンド例とともに解説し、NoSQLデータベースの基本を初心者にも分かりやすく紹介する。
ITニュース解説
現代のアプリケーション開発において、データベースは情報管理の要であり、Webサイトのユーザー情報、ECサイトの商品データ、SNSの投稿履歴など、あらゆるデータがデータベースに保存され、活用されている。その中でMongoDBは、柔軟な設計が特徴のNoSQLデータベースの一つであり、多くの開発者に利用されている。データベースの基本的な操作は「CRUD(クラッド)」と呼ばれる四つの機能に集約される。これはCreate(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字を取ったものであり、あらゆるデータベース操作の基礎となる概念だ。この記事では、MongoDB AtlasというクラウドベースのMongoDBサービスを使い、大学の学生記録管理を例に、これらのCRUD操作が具体的にどのように行われるかを解説する。システムエンジニアを目指す上で、このCRUD操作を理解することはデータベースを扱う第一歩として非常に重要である。
まず、学生の記録をデータベースに保存するためのデータの形、つまり「スキーマ」を見てみよう。MongoDBでは、データは「ドキュメント」と呼ばれるJSONのような形式で保存される。ニュース記事の例では、一つの学生ドキュメントは以下のような構造をしている。student_id(学生ID)、name(名前)、age(年齢)、department(学科)、year(学年)、cgpa(成績平均点)といった情報を保持している。MongoDBは「スキーマレス」または「スキーマフレキシブル」と呼ばれる特性を持っており、あらかじめ厳密なデータの型を定義しなくてもデータを保存できる柔軟性がある。これにより、開発中にデータの構造が変化しても対応しやすく、迅速な開発が可能となる。この学生情報が格納される場所を「コレクション」と呼び、ここではstudentsコレクションとして扱う。
データベースに新しい学生の記録を追加する操作がCreate、つまり「作成」である。記事の例では、insertManyというコマンドを使って複数の学生データを一度に追加している。具体的には、db.students.insertMany([...])という形式で、角括弧[]の中に複数の学生ドキュメント(波括弧{}で囲まれたデータ)をカンマで区切って記述する。このコマンドは、dbオブジェクトを通じてstudentsコレクションに対し、指定された配列内の五つの学生ドキュメントをまとめて挿入する。これにより、データベースに初期データが効率的に追加される。もし一つのドキュメントだけを追加したい場合はinsertOneコマンドを使用する。このように、データベースにデータを格納することが、あらゆるアプリケーションの第一歩となる。
データベースに保存されたデータを参照するのがRead、つまり「読み取り」操作である。これはアプリケーションがユーザーに情報を表示する際に最も頻繁に行われる操作だ。MongoDBではfindコマンドを使用してデータを検索する。まず、db.students.find().pretty()というコマンドは、studentsコレクションに保存されている全ての学生記録を取得し、.pretty()メソッドによって人間が読みやすい形式で表示する。これはデータベース内の全データを一覧したい場合によく使われる。次に、特定の条件に合致する学生を検索する方法がある。例えば、CGPAが8より大きい学生を探す場合は、db.students.find({ cgpa: { $gt: 8 } })と記述する。ここで$gtは「greater than(〜より大きい)」を意味する演算子で、指定された値よりも大きな値を持つドキュメントを検索する。このコマンドを実行すると、CGPAが9のSanthoshと9.1のMeenaがヒットするはずだ。さらに、特定の学科に所属する学生を探すこともできる。db.students.find({ department: "CSE" })というコマンドは、departmentフィールドが"CSE"(Computer Science and Engineering)である学生ドキュメントを検索する。この場合、PriyaとMeenaのデータが取得される。このように、findコマンドの引数に条件を指定することで、柔軟なデータ検索が可能になる。
既存のデータベースレコードの情報を変更するのがUpdate、つまり「更新」操作である。学生の成績が上がったり、学年が進んだりした場合にこの操作が使われる。記事の例では、まず特定の学生のCGPAを更新している。db.students.updateOne({ student_id: "S002" }, { $set: { cgpa: 9.0 } })というコマンドだ。これは、student_idが"S002"であるドキュメント(Priyaの記録)を一つだけ更新するという意味である。最初の波括弧内で更新対象のドキュメントを指定し、二番目の波括弧内で更新内容を指定する。$set演算子は、指定されたフィールドの値を新しい値に完全に置き換える役割を持つ。このコマンドにより、PriyaのCGPAは8.7から9.0に変更される。次に、複数の学生の情報を一括で更新する例がある。db.students.updateMany({ year: 3 }, { $inc: { year: 1 } })というコマンドは、yearが3である全ての学生(3年生)に対し、yearフィールドの値を1だけ増加させる。$inc演算子は「increment(増加させる)」を意味し、指定されたフィールドの現在の値に数値を加算する。これにより、3年生だったPriyaとMeenaは4年生になる。updateOneが単一のドキュメントを対象とするのに対し、updateManyは複数のドキュメントを対象とすることで、効率的な一括更新を可能にする。
データベースから不要になった学生の記録を消去するのがDelete、つまり「削除」操作である。学生が退学した場合や、古いデータが必要なくなった場合などに使用される。特定の学生の記録を削除する場合は、db.students.deleteOne({ student_id: "S003" })というコマンドを使う。これは、student_idが"S003"であるドキュメント(Arjunの記録)を一つだけ削除する。これにより、Arjunの学生情報はデータベースから抹消される。複数の学生の記録を一括で削除することも可能だ。db.students.deleteMany({ cgpa: { $lt: 7.5 } })というコマンドは、cgpaが7.5より小さい全ての学生を削除する。ここで$ltは「less than(〜より小さい)」を意味する演算子だ。元々CGPAが7.2だったArjunは既に削除されているが、もし別の学生でCGPAが7.5未満の者がいれば、このコマンドでまとめて削除される。deleteOneと同様に、deleteManyも条件を指定することで効率的なデータ削除を実現する。
これまで見てきたように、CRUD操作(Create, Read, Update, Delete)は、データベースを扱う上で最も基本的な四つの機能である。MongoDBでは、これらの操作が直感的かつ柔軟に行える。特に、今回の学生管理の例のように具体的なユースケースを通じて学ぶことで、その理解は深まるだろう。MongoDBはスキーマフレキシブルな特性を持つため、データの構造変更にも柔軟に対応できる点が大きな利点だ。システムエンジニアとしてのキャリアをスタートするにあたり、CRUDの概念とMongoDBのようなNoSQLデータベースの基本操作を習得することは、データ管理の土台を築く上で非常に重要である。これらの基礎を理解することで、さらに高度なデータベース操作や、アプリケーション開発全体への理解へと繋がっていく。