Docs 菜单
Docs 主页
/
MongoDB Shell
/

查询文档

在此页面上

  • 读取集合中的所有文档
  • 指定相等条件
  • 使用查询操作符指定条件
  • 指定逻辑操作符 (AND / OR)
  • 读取行为
  • 其他查询教程

在 MongoDB Shell 中使用 db.collection.find() 方法查询集合中的文档。

本页的示例参考了 Atlas 示例数据集。您可以创建一个免费的 Atlas 集群,并用示例数据填充该集群,以遵循这些示例。要了解更多信息,请参阅开始使用 Atlas

要读取集合中的所有文档,请将一个空文档作为查询筛选条件的参数传递给 find 方法。查询筛选条件参数决定了选择条件。

例子

要返回 sample_mflix.movies 集合中的所有文档:

use sample_mflix
db.movies.find()

该操作等同于以下 SQL 语句:

SELECT * FROM movies

要选择匹配相等条件的文档,请在查询过滤器文档中将条件指定为 <field>:<value> 对。

例子

要返回 sample_mflix.movies 集合中 title 等于Titanic 的所有电影:

use sample_mflix
db.movies.find( { "title": "Titanic" } )

此操作对应于以下 SQL 语句:

SELECT * FROM movies WHERE title = "Titanic"

查询过滤器文档中使用查询操作符来执行更复杂的比较和评估。查询过滤器文档中的查询操作符具有以下形式:

{ <field1>: { <operator1>: <value1> }, ... }

例子

要返回 sample_mflix.movies 集合中分级为 PGPG-13 的所有电影:

use sample_mflix
db.movies.find( { rated: { $in: [ "PG", "PG-13" ] } } )

此操作对应于以下 SQL 语句:

SELECT * FROM movies WHERE rated in ("PG", "PG-13")

注意

尽管您可以使用 $or 操作符来表示此查询,但在对同一字段执行相等检查时,请使用 $in 操作符而不是 $or 操作符。

复合查询可以为集合文档中的多个字段指定条件。逻辑 AND 连接词隐式地连接复合查询的子句,以便该查询选择集合中与所有条件匹配的文档。

例子

要返回在墨西哥上映 IMDB 评级至少为 7 的电影:

use sample_mflix
db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )

使用 $or 操作符指定复合查询,该复合查询使用逻辑 OR 结合使用每个子句,以便查询选择集合中至少匹配一个条件的文档。

例子

要返回 2010 年发行的 sample_mflix.movies 系列中至少获得 5 个奖项或 genreDrama 的电影:

use sample_mflix
db.movies.find( {
year: 2010,
$or: [ { "awards.wins": { $gte: 5 } }, { genres: "Drama" } ]
} )

要进一步了解读取文档的具体行为,请参阅行为

有关其他查询示例,请参阅:

后退

Insert