MongoDB 查询文档
-
查询文档
在本章中,我们将学习如何从MongoDB集合中查询文档。 -
find()方法
要查询MongoDB集合中的数据,您需要使用MongoDB的find()方法。语法参数- query - document [可选的]。使用查询操作符指定选择筛选器。若要返回集合中的所有文档,请省略此参数或传递一个空文档({})。
- projection -document [可选的]。指定要在文档中返回与查询筛选器匹配的字段。要返回匹配文档中的所有字段,请省略此参数。有关详细信息,请参见投影。
示例假设我们已经创建了一个名为mycol的集合-并使用insert()方法在其中插入3个文档,如下所示-以下方法检索集合中的所有文档- -
pretty() 方法
要以格式化的方式显示结果,可以使用pretty()方法。语法以下示例从名为mycol的集合中检索所有文档,并以易于阅读的格式排列它们。 -
findOne()方法
除了find()方法之外,还有findOne()方法,该方法仅返回一个文档。语法:以下示例检索title为MongoDB Overview的文档。 -
>RDBMS(关系型数据库系统)中MongoDB中的子句等效
操作 例子 语法 RDBMS等效 相等 {<key>:{$eg;<value>}} db.mycol.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程' 小于 {<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 matches any of the value in :["Raj", "Ram", "Raghu"] 值不在数组中 {<key>:{$nin:<value>}} db.mycol.find({"name":{$nin:["Ramu", "Raghav"]}}).pretty() where name values is not in the array :["Ramu", "Raghav"] or, doesn’t exist at all -
MongoDB中的AND
要基于AND条件查询文档,您需要使用$and关键字。以下是AND的基本语法-语法:以下示例将显示所有由“菜鸟教程”编写的教程,其标题为“MongoDB Overview”。对于上面给出的示例,等效的where子句将是“where by ='菜鸟教程'AND title ='MongoDB Overview''。您可以在find子句中传递任意数量的键,值对。 -
MongoDB中的OR
要基于OR条件查询文档,您需要使用$or关键字。以下是OR的基本语法-语法:以下示例将显示所有由“菜鸟教程”编写或标题为“MongoDB Overview”的教程。 -
一起使用AND和OR
下面的示例将显示likes大于10且title为“MongoDB Overview”或by为“菜鸟教程”的文档。等价的SQL where子句为'where likes> 10 AND(by ='菜鸟教程'OR title ='MongoDB Overview') -
MongoDB中的NOR
要根据NOT条件查询文档,需要使用$not关键字。以下是NOT的基本语法-假设我们在集合empDetails中插入了3个文档,如下所示-以下示例将检索first_name不是“Radhika”或者last_name不是“Christopher”的文档 -
MongoDB中的NOT
要根据NOT条件查询文档,您需要使用$ not关键字,这是NOT的基本语法-以下示例将检索年龄不超过25岁的文档-