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,它只会显示遇到的第一个。

MongoDB中的RDBMS WHERE子句等效

现在,让我们将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