Docs 菜单

Docs 主页开发应用程序MongoDB Manual

查询文档

在此页面上

  • 选择集合中的所有文档
  • 指定相等条件
  • 使用查询操作符指定条件
  • 指定 AND 条件
  • 指定 OR 条件
  • 指定 ANDOR 条件
  • 使用 MongoDB Atlas 查询文档
  • 其他查询教程
  • 行为
  • 其他方法和选项

您可以使用以下方法查询MongoDB中的文档:

  • 您的编程语言的驱动程序。

  • MongoDB Atlas 用户界面。要了解更多信息,请参阅使用 MongoDB Atlas 查询文档

  • MongoDB Compass。


➤ 使用右上角的 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"

注意

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

该操作使用 { status: { $in: [ "A", "D" ] } } 的过滤谓词,对应以下 SQL 声明:

SELECT * FROM inventory WHERE status in ("A", "D")

有关 MongoDB 查询运算符的完整列表,请参阅查询和投影运算符文档。

复合查询可以为集合文档中的多个字段指定条件。逻辑 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 连接词连接每个每个子句,以便该查询选择集合中至少匹配一个条件的文档。

以下示例检索集合中 status 等于 "A" qty 小于 ($lt) 30 的所有文档:

该操作使用 { $or: [ { status: 'A' }, { qty: { $lt: 30 } } ] } 的过滤谓词,对应以下 SQL 声明:

SELECT * FROM inventory WHERE status = "A" OR qty < 30

注意

使用比较运算符的查询受类型范围限制。

在以下示例中,复合查询文档选择集合中 status 等于 "A"qty 小于 ($lt) 30item 以字符 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 中投影查询返回的字段,请按照以下步骤操作:

1
  1. 在 MongoDB Atlas 用户界面中,单击侧边栏中的 Database

  2. 对于包含样本数据的数据库部署,单击 Browse Collections

  3. 在左侧导航窗格中,选择 sample_mflix 数据库。

  4. 选择 movies 集合。

2

Filter 字段中指定查询筛选器文档。查询筛选器文档使用查询运算符来指定搜索条件。

将以下查询筛选器文档复制到 Filter 搜索栏:

{ year: 1924 }
3

此查询筛选器返回 sample_mflix.movies 集合中 year 字段与 1924 匹配的所有文档。

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

关于对副本集和副本集分片的读取,读关注 (read concern) 允许客户端为其读取操作选择隔离级别。有关更多信息,请参阅读关注 (read concern) 。

使用 MongoDB 驱动程序或 mongosh 运行查找操作时,命令会返回一个管理查询结果的游标。查询结果不会以大量文档的形式返回。

要了解如何在游标中遍历文档,请参阅驱动程序文档。如果使用的是mongosh ,请参阅mongosh中的迭代游标。

← 插入方法