查询文档
使用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
集合,评级为PG
或PG-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
/ OR
)
复合查询可以指定集合文档中多个字段的条件。隐含地,逻辑AND
结合连接复合查询的子句,因此查询选择匹配所有条件的集合中的文档。
示例
返回在墨西哥上映且IMDB评分至少为7的电影
use sample_mflix db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )
使用 $or
操作符来指定一个复合查询,其中每个子句通过逻辑 OR
连接符连接,以便查询选择至少符合一个条件的集合中的文档。
示例
为了返回 sample_mflix.movies
集合中2010年上映的电影,这些电影要么赢得了至少5个奖项,要么有一个 genre
为 Drama
。
use sample_mflix db.movies.find( { year: 2010, $or: [ { "awards.wins": { $gte: 5 } }, { genres: "Drama" } ] } )
阅读行为
要了解更多关于读取文档的特定行为,请参阅 行为。
更多查询教程
有关更多查询示例,请参阅