MongoDB - 查询文档
你好,未来的数据库大师们!今天,我们将深入MongoDB的精彩世界,学习如何查询文档。作为你友善的邻里计算机老师,我将在这一旅程中逐步引导你。所以,戴上你的虚拟安全帽,让我们一起开始探索吧!
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