MongoDB - クエリのドキュメント

こんにちは、未来のデータベースの魔法使いたち!今日は、MongoDBのエキサイティングな世界に飛び込み、ドキュメントのクエリ方法を学びます。あなたの近所の親切なコンピュータ教師として、私はこの旅を一歩一歩ガイドします。では、バーチャルなヘルメットをかぶり、探検を始めましょう!

MongoDB - Query Document

find()メソッド

find()メソッドは、MongoDBでの宝探しのようなものです。コレクション内のドキュメントを検索する手助けをしてくれます。想像して見てください、あなたの学校のデータベースに「students」というコレクションがあります。では、find()を使って情報を取得する方法を見てみましょう。

db.students.find()

このシンプルな一行のコードは、「students」コレクション内のすべてのドキュメントを返します。まるで「すべての学生を見せて」と言うようなものです。

でも、もっと具体的にしたい場合はどうでしょうか?例えば、「John」という名前のすべての学生を見つけたい場合です。

db.students.find({name: "John"})

このクエリは、名前のフィールドが「John」であるすべてのドキュメントを返します。まるで「クラスのすべてのJohnを見せて」と言うようなものです。

pretty()メソッド

では、結果をきれいに整えるためにpretty()メソッドを使ってみましょう。データにファンシーなメイクを施すようなものです!

db.students.find().pretty()

これにより、結果が格式化され、読みやすくなります。まるで散らかった部屋を片付けるようなもので、突然すべてが良く見えるようになります!

findOne()メソッド

時々、一つのドキュメントを見つけるだけで十分な場合があります。その際に便利な的就是findOne()メソッドです。まるで木の最初のりんごを取るようなものです。

db.students.findOne({name: "Sarah"})

これは、名前が「Sarah」である最初のドキュメントを返します。複数のSarahがいる場合でも、最初に見つかったものだけを表示します。

RDBMS WHERE句とMongoDBの対応表

では、MongoDBのクエリをSQLのWHERE句に比較してみましょう。まるで二つの言語間で翻訳するようなものです!

SQL WHERE句 MongoDBの対応
WHERE name = "John" {name: "John"}
WHERE age > 25 {age: { $gt: 25 }}
WHERE age >= 25 {age: { $gte: 25 }}
WHERE age < 25 {age: { $lt: 25 }}
WHERE age <= 25 {age: { $lte: 25 }}
WHERE age != 25 {age: { $ne: 25 }}

MongoDBでのAND

MongoDBでは、AND論理を使って条件を結合できます。まるで「これとそれを両方欲しい」と言うようなものです。

db.students.find({name: "John", age: 20})

このクエリは、名前が「John」で年齢が20歳であるすべてのドキュメントを見つけます。

MongoDBでのOR

時々、条件のいずれかを満たすドキュメントを見つけたい場合があります。MongoDBはそれをサポートしています!

db.students.find({$or: [{name: "John"}, {age: 20}]})

このクエリは、名前が「John」であるか年齢が20歳であるすべてのドキュメントを見つけます。

ANDとORを一緒に使う

ANDとORの条件を一緒に使うこともできます。まるで複雑な宝探しの地図を作るようなものです!

db.students.find({
grade: "A",
$or: [{name: "John"}, {age: 20}]
})

このクエリは、成績が「A」で、名前が「John」であるか年齢が20歳であるすべてのドキュメントを見つけます。

MongoDBでのNOR

NORは「これもそれもでない」と言うようなものです。ORの反対です。

db.students.find({
$nor: [{name: "John"}, {age: 20}]
})

このクエリは、名前が「John」でないか年齢が20歳でないすべてのドキュメントを見つけます。

MongoDBでのNOT

最後に、NOTオペレータがあります。これは「これ以外のすべて」と言うようなものです。

db.students.find({
name: { $not: { $eq: "John" } }
})

このクエリは、名前が「John」でないすべてのドキュメントを見つけます。

そして、ここまでが、MongoDBクエリの土地を旅したあなたたちの冒険です!練習が习惯を生み、完璧を達成するので、これらのクエリを試してみてください。あなたのデータの中に隠された宝を発見するかもしれません!

最後に、簡単なクイズをしましょう。18歳の学生か、名前が「Emma」で成績が「B」の学生を探すクエリを書けますか?挑戦してみてください、そして結果をpretty()メソッドできれいに見せてください!

未来のデータベースのマスターたち、快適なクエリを楽しんでください!

Credits: Image by storyset