查询文档
在 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
集合中分级为 PG
或 PG-13
的所有电影:
use sample_mflix db.movies.find( { rated: { $in: [ "PG", "PG-13" ] } } )
此操作对应于以下 SQL 语句:
SELECT * FROM movies WHERE rated in ("PG", "PG-13")
指定逻辑操作符 (AND
/ OR
)
复合查询可以为集合文档中的多个字段指定条件。逻辑 AND
连接词隐式地连接复合查询的子句,以便该查询选择集合中与所有条件匹配的文档。
例子
要返回在墨西哥上映且 IMDB 评级至少为 7 的电影:
use sample_mflix db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )
使用 $or
操作符指定复合查询,该复合查询使用逻辑 OR
结合使用每个子句,以便查询选择集合中至少匹配一个条件的文档。
例子
要返回 2010 年发行的 sample_mflix.movies
系列中至少获得 5 个奖项或 genre
为 Drama
的电影:
use sample_mflix db.movies.find( { year: 2010, $or: [ { "awards.wins": { $gte: 5 } }, { genres: "Drama" } ] } )
读取行为
要进一步了解读取文档的具体行为,请参阅行为。
其他查询教程
有关其他查询示例,请参阅: