MongoDB 查询文档
在本章中,我们将学习如何从MongoDB集合中查询文档。
find()方法
要从MongoDB集合中查询数据,您需要使用MongoDB的 find() 方法。
语法
find() 方法的基本语法如下 –
find() 方法将以非结构化的方式显示所有文档。
示例
假设我们已经创建了一个名为mycol的集合,如下所示:
通过使用如下所示的insert()方法,将其中插入了3个文档。
以下方法获取集合中的所有文档 −
pretty() 方法
以格式化的方式显示结果,您可以使用pretty()方法。
语法
示例
以下示例从名为mycol的集合中检索所有文档,并以易于阅读的格式排列它们。
findOne()方法
除了find()方法外,还有一个 findOne() 方法,它将只返回一个文档。
语法
示例
以下示例检索标题为“MongoDB概述”的文档。
RDBMS在MongoDB中的Where子句等效操作
要根据某些条件查询文档,您可以使用以下操作。
操作 | 语法 | 示例 | RDBMS对应的语句 |
---|---|---|---|
相等 | {<key>:{$eg;<value>}} |
db.mycol.find({"by":"tutorials point"}).pretty() |
where by = ‘tutorials point’ |
小于 | {<key>:{$lt:<value>}} |
db.mycol.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于等于 | {<key>:{$lte:<value>}} |
db.mycol.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.mycol.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于等于 | {<key>:{$gte:<value>}} |
db.mycol.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不相等 | {<key>:{$ne:<value>}} |
db.mycol.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
数组中的值 | {<key>:{$in:[<value1>, <value2>,……<valueN>]}} |
db.mycol.find({"name":{$in:["Raj", "Ram", "Raghu"]}}).pretty() |
Where name 匹配数组中任何一个值:[“Raj”, “Ram”, “Raghu”] |
不在数组中的值 | {<key>:{$nin:<value>}} |
db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() |
Where name 值不在数组中:[“Ramu”, “Raghav”] 或者不存在 |
MongoDB中的AND
语法
要基于AND条件查询文档,需要使用$and关键字。以下是AND的基本语法−
示例
以下示例将显示所有由“教程点”编写且标题为“MongoDB概述”的教程。
对于上面给出的例子,等效的where子句将是 ‘where by = ‘tutorials point’ AND title = ‘MongoDB Overview” 。您可以在find子句中传递任意数量的键值对。
在MongoDB中的OR操作符
语法
要根据OR条件查询文档,您需要使用 $or 关键字。以下是基本语法 OR –
示例
下面的示例将显示所有由“tutorials point”编写或标题为“MongoDB概述”的教程。
同时使用AND和OR
示例
以下示例将显示likes大于10且标题是’MongoDB概述’或by是’tutorials point’的文档。等效的SQL where子句为 ‘where likes >10 AND (by = ‘tutorials point’ OR title = ‘MongoDB概述’)’
在MongoDB中的NOR条件
语法
要根据NOT条件查询文档,您需要使用$not关键字。以下是基本语法: NOT −
示例
假设我们在集合 empDetails 中插入了3个文档,如下所示-
下面的例子将检索不是“Radhika”的名字和不是“Christopher”的姓氏的文档。
MongoDB中NOT
语法
要根据NOT条件查询文档,您需要使用$not关键字,以下是基本语法: NOT −
示例
以下示例将检索年纪不大于25的文档。