【ITニュース解説】CRUD Operations in MongoDB: Hands-On with a Student Collection
2025年10月03日に「Dev.to」が公開したITニュース「CRUD Operations in MongoDB: Hands-On with a Student Collection」について初心者にもわかりやすく解説しています。
ITニュース概要
MongoDBはJSON形式でデータを扱うNoSQLデータベース。この記事では、学生データを例に、データの作成(Create)・読み出し(Read)・更新(Update)・削除(Delete)というデータベースの基本操作(CRUD)を実践的に解説する。柔軟なデータ構造と高い拡張性が特徴だ。
ITニュース解説
データベースは、Webサイトやアプリケーションが動く上で、ユーザー情報、商品データ、記事コンテンツなど、あらゆる情報を整理して保存しておくための「情報の倉庫」のような存在だ。システムエンジニアにとって、このデータベースをどのように扱い、必要な情報を効率的に出し入れするかを理解することは、非常に重要である。
今回取り上げるMongoDBは、数あるデータベースの中でも「NoSQLデータベース」と呼ばれる種類に分類される。従来のデータベースの多くが、厳格な表形式(リレーショナルデータベース)でデータを管理するのに対し、MongoDBは「ドキュメント指向」という特徴を持っている。これは、データをJSON(JavaScript Object Notation)という形式に似た「ドキュメント」という単位で保存することを意味する。JSONは、プログラミング言語間でデータをやり取りする際によく使われる、人間にとっても読みやすいデータ形式だ。例として、学生一人ひとりの情報を、名前、年齢、学部、学年、成績といった項目とそれに対応する値で一つのまとまりとして扱う。これがMongoDBのドキュメントの基本的な考え方である。
このMongoDBを使ってデータベースの基本操作を学ぶ上で不可欠なのが「CRUD」と呼ばれる概念だ。CRUDとは、Create(作成)、Read(読み出し)、Update(更新)、Delete(削除)の頭文字を取ったもので、どんなデータベースでも共通して行われる基本的なデータ操作を指す。今回の記事では、このCRUD操作を、大学の学生データを例に具体的に見ていく。
まず、「Create(作成)」についてだ。これは、データベースに新しいデータを追加する操作である。例えば、新しい学生が入学してきた場合に、その学生の情報をデータベースに登録する作業がこれにあたる。記事の例では、以下のような構造で学生のドキュメントを作成している。
1{ 2 "student_id": "S001", 3 "name": "Pranav", 4 "age": 20, 5 "department": "CSBS", 6 "year": 2, 7 "cgpa": 9 8}
この例では、student_idが学生を識別するID、nameが名前、ageが年齢、departmentが学部、yearが学年、cgpaが成績(平均評価点)をそれぞれ表している。MongoDBでは、このように項目(フィールド)と値のペアで構成されるドキュメントを、insertOne(一つ追加)やinsertMany(複数追加)といったコマンドを使ってデータベースに保存する。記事では5人の学生データが作成されているが、これらは全てこのようなドキュメント形式でデータベースに追加されることになる。
次に、「Read(読み出し)」は、データベースに保存されている情報を取り出して表示する操作である。保存されたデータの中から、必要な情報を探し出すのがこの段階だ。検索条件を指定することで、必要なデータだけを効率的に取り出すことができる。
記事では3つのReadの例が挙げられている。
A. 「全ての学生を表示」という場合、MongoDBでは検索条件を何も指定しない{}という空のオブジェクトを使う。これは「条件なし、つまり全部」という意味になる。
B. 「CGPA(成績)が8より大きい学生」を探す場合、{ "cgpa": { "$gt": 8 } }という条件を指定する。ここで"cgpa"は検索対象の項目、"$gt"は「greater than(〜より大きい)」という比較演算子で、続く8が比較の対象となる値だ。このように、MongoDBでは特殊な記号($で始まる)を使って、より詳細な検索条件を指定できる。
C. 「CSBS学部の学生」を探す場合は、{ "department": { "$in": ["CSBS"] } }と記述する。"$in"は「in(〜に含まれる)」という意味で、指定した配列(この場合は["CSBS"])の中に値が含まれているドキュメントを検索する。この例では単一の学部だが、複数の学部を指定して検索することも可能だ。
これらの検索操作は、MongoDBのfind()コマンドによって実行される。find()は非常に強力で、様々な条件を組み合わせて柔軟なデータ抽出ができる。
三つ目の「Update(更新)」は、既存のデータを変更する操作を指す。例えば、学生の成績が更新されたり、学年が上がったりした場合に、データベース内の該当する情報を書き換えるのがUpdateだ。
記事では2つのUpdateの例がある。
A. 「特定の学生(S002)のCGPAを更新」という操作では、まず{ "student_id": "S002" }という条件で、更新対象の学生を特定する。その後、指定された学生のcgpaフィールドの値を新しい値に変更する操作が実行される。
B. 「全ての3年生の学年を1増やす」という操作では、{ "year": 3 }という条件で、現在の学年が3年の学生全員を対象にする。その後、対象となる学生全員のyearフィールドの値を4に更新する操作が行われる。
MongoDBでは、updateOne(条件に合致する一つだけ更新)やupdateMany(条件に合致する全てを更新)といったコマンドを使って、このような更新処理を行う。更新の際には、どのドキュメントを対象にするか(クエリ)、どのフィールドをどのように変更するか(更新オペレーター)を明確に指定する。
最後の「Delete(削除)」は、データベースから不要なデータを完全に消去する操作である。卒業した学生の情報を整理したり、誤って登録されたデータを削除したりする場合に利用される。
記事では2つのDeleteの例がある。
A. 「特定の学生(S004)を削除」する場合、{ "student_id": "S004" }という条件で、削除したい学生のドキュメントを特定する。
B. 「CGPA(成績)が7.5未満の学生全員を削除」する場合、{ "cgpa": { "$lt": 7.5 } }という条件を使う。ここで"$lt"は「less than(〜より小さい)」という比較演算子である。この条件に合致する学生のドキュメントが全て削除される。
MongoDBでは、deleteOne(条件に合致する一つだけ削除)やdeleteMany(条件に合致する全てを削除)といったコマンドを用いて、データの削除を行う。削除は元に戻せない操作であるため、実行する際には細心の注意が必要だ。
これらのCRUD操作は、MongoDBの強力な機能の一部である。MongoDBは「柔軟なスキーマレスなデータストレージ」を特徴としており、これはデータの構造(スキーマ)を事前に厳密に定義する必要がないことを意味する。例えば、新しい学生が入学し、その学生には他の学生にはない特別な情報(例えば、特待生フラグなど)を追加したい場合でも、柔軟にその学生のドキュメントにのみ新しいフィールドを追加できる。これにより、アプリケーションの開発を迅速に進めたり、変化する要件に素早く対応したりすることが可能になる。また、大規模なデータや多くのアクセスにも対応できる「スケーラビリティ」も大きな利点だ。
システムエンジニアを目指す上で、このようなデータベースの基本的な操作と、MongoDBのようなモダンなデータベースの特性を理解することは、非常に重要なスキルとなる。今回の記事で紹介されたCRUD操作と学生コレクションの例は、MongoDBの入門として非常に分かりやすく、今後の学習の基礎となるだろう。データを取り扱うあらゆるシステムでデータベースは不可欠な要素であり、その操作をマスターすることが、システムの設計・開発において大きな強みとなる。MongoDBは、その柔軟性と性能から、Webアプリケーション開発からビッグデータ処理まで、幅広い分野で活用されているデータベースだ。この基本的な操作を習得することで、様々なシステムの裏側でどのようにデータが管理されているかを理解し、自らもデータ駆動型のアプリケーションを開発する力が身につくことだろう。