文档菜单
文档首页
/
MongoDB Shell
/

查询文档

在本页

  • 读取集合中所有文档
  • 指定相等条件
  • 使用查询运算符指定条件
  • 指定逻辑运算符(AND / OR)
  • 读取行为
  • 附加查询教程

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

本页面上的示例引用了Atlas 示例数据集。您可以创建一个免费的Atlas集群,并在该集群中填充示例数据以跟随这些示例。要了解更多信息,请参阅在 Atlas 中入门。

要读取集合中的所有文档,请将空文档作为查询过滤器参数传递给 find 方法。查询过滤器参数确定选择标准。

示例

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

use sample_mflix
db.movies.find()

此操作相当于以下 SQL 语句

SELECT * FROM movies

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

示例

sample_mflix.movies集合中返回所有标题等于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 连接符连接,以便查询选择至少符合一个条件的集合中的文档。

示例

为了返回 sample_mflix.movies 集合中2010年上映的电影,这些电影要么赢得了至少5个奖项,要么有一个 genreDrama

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

要了解更多关于读取文档的特定行为,请参阅 行为。

有关更多查询示例,请参阅

返回

插入