Docs 主页 → 开发应用程序 → MongoDB Manual
查询文档
您可以使用以下方法查询MongoDB中的文档:
您的编程语言的驱动程序。
MongoDB Atlas 用户界面。要了解更多信息,请参阅使用 MongoDB Atlas 查询文档。
➤ 使用右上角的 Select your language(选择语言)下拉菜单,设置以下示例的语言或选择 MongoDB Compass。
选择集合中的所有文档
该操作使用{}
的过滤谓词,对应以下 SQL 声明:
SELECT * FROM inventory
指定相等条件
以下示例从 inventory
中选择集合所有 status
等于 "D"
的文档:
该操作使用 { status: "D" }
的过滤谓词,对应以下 SQL 声明:
SELECT * FROM inventory WHERE status = "D"
使用查询操作符指定条件
以下示例从 inventory
集合中检索所有文档。其中 status
等于 "A"
或 "D"
:
该操作使用 { status: { $in: [ "A", "D" ] } }
的过滤谓词,对应以下 SQL 声明:
SELECT * FROM inventory WHERE status in ("A", "D")
有关 MongoDB 查询运算符的完整列表,请参阅查询和投影运算符文档。
指定AND
条件
复合查询可以为集合文档中的多个字段指定条件。逻辑 AND
连接词隐式地连接复合查询的子句,以便该查询选择集合中与所有条件匹配的文档。
以下示例检索 inventory
集合中 status
等于 "A"
且qty
小于 ($lt
) 30
的所有文档:
该操作使用 { status: "A", qty: { $lt: 30 } }
的过滤谓词,对应以下 SQL 声明:
SELECT * FROM inventory WHERE status = "A" AND qty < 30
有关其他 MongoDB 比较运算符,请参阅比较运算符。
指定OR
条件
可以使用 $or
操作符指定复合查询,该复合查询使用逻辑 OR
连接词连接每个每个子句,以便该查询选择集合中至少匹配一个条件的文档。
以下示例检索集合中 status
等于 "A"
或 qty
小于 ($lt
) 30
的所有文档:
该操作使用 { $or: [ { status: 'A' }, { qty: { $lt: 30 } } ] }
的过滤谓词,对应以下 SQL 声明:
SELECT * FROM inventory WHERE status = "A" OR qty < 30
指定AND
和OR
条件
在以下示例中,复合查询文档选择集合中 status
等于 "A"
且 qty
小于 ($lt
) 30
或 item
以字符 p
开头的文档:
该操作使用以下筛选谓词:
{ status: 'A', $or: [ { qty: { $lt: 30 } }, { item: { $regex: '^p' } } ] }
对应如下 SQL 语句:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
注意
MongoDB 支持正则表达式 $regex
查询,以执行字符串模式匹配。
使用 MongoDB Atlas 查询文档
本部分中的示例使用样本电影数据集。要了解如何将样本数据集加载到 MongoDB Atlas 部署中,请参阅加载样本数据。
要在 MongoDB Atlas 中投影查询返回的字段,请按照以下步骤操作:
其他查询教程
有关其他查询示例,请参阅:
行为
游标
读取隔离性
关于对副本集和副本集分片的读取,读关注 (read concern) 允许客户端为其读取操作选择隔离级别。有关更多信息,请参阅读关注 (read concern) 。
查询结果格式
使用 MongoDB 驱动程序或 mongosh
运行查找操作时,命令会返回一个管理查询结果的游标。查询结果不会以大量文档的形式返回。
要了解如何在游标中遍历文档,请参阅驱动程序文档。如果使用的是mongosh
,请参阅mongosh
中的迭代游标。