【ITニュース解説】MongoDB Queries
2025年09月24日に「Dev.to」が公開したITニュース「MongoDB Queries」について初心者にもわかりやすく解説しています。
ITニュース概要
MongoDBは、柔軟なデータ保存が特徴のデータベース。この記事は、MongoDBのデータ検索・操作に使う「クエリ」の基本を解説する。データの取得、更新、削除など、システム開発で必須の操作方法を初心者向けに分かりやすく紹介し、MongoDBの基礎を学ぶのに役立つ。
ITニュース解説
MongoDBは、数あるデータベースシステムの中でも、特に現代のウェブアプリケーション開発で広く使われている、非常に柔軟なデータベースの一つである。従来のデータベースがデータを厳格な表形式で管理するのに対し、MongoDBは「ドキュメント」という形でデータを管理する。「ドキュメント」は、ちょうどJSON(JavaScript Object Notation)というデータ形式に似ており、名前、年齢、メールアドレスといった様々な種類の情報を、柔軟な構造でまとめて格納できる。これにより、開発者は事前に厳密な設計図を決めなくても、アプリケーションの進化に合わせてデータの構造を自由に変更できるため、開発のスピードを大きく向上させられる点が大きな特徴だ。この柔軟性から、MongoDBはNoSQL(Not Only SQL)データベースと呼ばれるカテゴリに属する。
データベースを操作する上で最も基本的な四つの操作は、作成(Create)、読み込み(Read)、更新(Update)、削除(Delete)であり、これらは頭文字をとって「CRUD」操作と呼ばれる。MongoDBでも、これらのCRUD操作がデータベース管理の核となる。
まず、データの「作成」、つまり「挿入」について説明する。MongoDBで新しいデータを保存するときは、主にinsertOneとinsertManyという二つの方法が使われる。insertOneは、一度に一つのドキュメントをコレクション(RDBでいうテーブルのようなもの)に追加したい場合に使う。例えば、一人のユーザーの情報をデータベースに追加したいときに便利だ。一方、insertManyは、複数のドキュメントをまとめて一度に挿入したいときに使う。例えば、複数のユーザー情報をまとめて登録したい場合など、効率的に作業を進められる。挿入するデータは、先ほど説明したように、キーと値のペアで構成されるJSONのような形式で記述される。
次に、データの「読み込み」、つまり「参照」の操作を見ていこう。データベースに保存された情報を取り出すための最も重要な操作だ。
最も基本的な参照方法は、find({})だ。これは、特定のコレクションに存在する全てのドキュメントを取得する。括弧の中が空の場合、条件を指定しないことになり、全てが対象となる。
特定の条件に合うドキュメントだけを参照したい場合は、find({条件})のように条件を指定する。例えば、「年齢が30歳のユーザー」や「居住地が東京のユーザー」など、特定のフィールドの値に基づいてデータを絞り込むことができる。さらに、「年齢が25歳より大きい」といった比較を行うためには、$gt(より大きい)、$lt(より小さい)、$gte(以上)、$lte(以下)といった「比較演算子」を用いる。例えば、find({age: {$gt: 25}})と書けば、年齢が25歳より大きいドキュメントだけを取得できる。
複数の条件を組み合わせたい場合には、「論理演算子」が役立つ。例えば、$andを使えば「年齢が20歳以上で、かつ、性別が女性」といった複数の条件が全て真であるドキュメントを検索できる。$orを使えば「年齢が20歳以上、または、居住地が大阪」のように、いずれかの条件が真であればドキュメントを取得できる。
取得するデータのフィールドを絞り込みたい場合もある。例えば、ユーザー情報から名前とメールアドレスだけが必要で、パスワードなどの情報は不要な場合だ。その際には、find({}, {name: 1, email: 1})のように、表示したいフィールド名を指定し、値に1を設定する。0を設定するとそのフィールドは非表示になる。
データを特定の順序で並べ替えて表示したい場合は、「ソート」機能を使う。例えば、sort({age: 1})と書けば、年齢の昇順(若い順)にドキュメントが並べ替えられる。age: -1とすれば降順(年配順)となる。
最後に、取得するドキュメントの数を制限したい場合は、「リミット」機能を使う。limit(10)と書けば、検索結果の最初の10件だけを取得できる。これにより、大量のデータの中から必要な分だけを取り出すことができる。
続いて、データの「更新」について解説する。既存のドキュメントの内容を変更する操作だ。
特定のドキュメントの特定のフィールドだけを更新する場合、最もよく使われるのはupdateOneと$set演算子の組み合わせだ。例えば、「名前が田中さんのメールアドレスを新しいものに変更する」といった場合、updateOne({name: "田中"}, {$set: {email: "new_email@example.com"}})のように記述する。これにより、nameが田中であるドキュメントを見つけ、そのemailフィールドだけを更新できる。updateManyを使えば、複数のドキュメントを一度に更新することも可能だ。
一方、ドキュメント全体を新しい内容で置き換えたい場合は、replaceOneを使う。これは、指定した条件に合うドキュメントを、新しいドキュメントの内容で完全に上書きする操作であるため、既存のフィールドが全て失われる可能性がある点には注意が必要だ。
最後に、データの「削除」操作だ。不要になったドキュメントをデータベースから取り除く。
特定の条件に合うドキュメントを一つだけ削除したい場合は、deleteOne({条件})を使う。例えば、「IDが特定の値であるドキュメントを削除する」といった場合に便利だ。
特定の条件に合う全てのドキュメントを削除したい場合は、deleteMany({条件})を使う。例えば、「アカウントが非アクティブな全てのユーザーを削除する」といった場合だ。条件を何も指定せずdeleteMany({})とすると、コレクション内の全てのドキュメントが削除されてしまうため、この操作は非常に注意して行う必要がある。
これらのCRUD操作を理解し、適切に使いこなすことは、MongoDBを使ったシステム開発の第一歩となる。各操作には多くのオプションや詳細な機能が存在するが、ここで解説した基本的な方法を身につけることで、データベースと効果的に対話し、様々なアプリケーションを構築するための土台を築けるだろう。これからも、さらに学習を深めていくことで、より高度なデータベース操作や設計ができるようになる。