文档菜单
文档首页
/ / /
PyMongo
/

检索不同的字段值

本页内容

  • 概述
  • 示例数据
  • distinct() 方法
  • 检索集合中的不同值
  • 检索指定文档中的不同值
  • 修改distinct行为
  • API文档

在一个集合中,不同的文档可能包含单个字段的不同值。例如,一个restaurant 文档具有 borough 值为 "Manhattan",另一个则具有 borough 值为 "Queens"。使用 PyMongo,您可以检索一个字段在集合中多个文档中包含的所有不同值。

本指南中的示例使用的是来自Atlas 示例数据集sample_restaurants.restaurants 集合。要了解如何创建免费的 MongoDB Atlas 集群并加载数据集,请参阅PyMongo 入门指南.

要检索指定字段的唯一值,请调用 distinct() 方法,并传入您要找到唯一值的字段名称。

以下示例检索《borough》字段在《restaurants》集合中的唯一值。

results = restaurants.distinct("borough")
for restaurant in results:
print(restaurant)
Bronx
Brooklyn
Manhattan
Missing
Queens
Staten Island

结果显示了在整个集合中所有文档的《borough》字段中出现的每个唯一值。尽管几个文档在《borough》字段中有相同的值,但每个值在结果中只出现一次。

您可以为《distinct()》方法提供一个《查询过滤器》来查找集合中子集文档的唯一字段值。查询过滤器是一个表达式,它指定用于匹配操作的文档的搜索条件。有关创建查询过滤器的更多信息,请参阅指定查询。

以下示例检索所有具有《cuisine》字段值《"Italian"》的文档的《borough》字段的唯一值。

results = restaurants.distinct("borough", {
"cuisine": "Italian"
})
for restaurant in results:
print(restaurant)
Bronx
Brooklyn
Manhattan
Queens
Staten Island

distinct()》方法接受可选参数,代表您可以使用它们来配置操作的选项。如果您不指定任何选项,则驱动程序不会自定义操作。

以下表格描述了您可以设置的选项以自定义《distinct()

属性
描述
filter
指定从哪些文档中检索唯一值的查询过滤器。
会话
ClientSession的一个实例。
注释
用于操作的注释。
maxTimeMS
允许操作运行的最大时间,单位为毫秒。
排序
Collation的一个实例。

以下示例检索所有具有borough字段值为"Bronx"cuisine字段值为"Pizza"的文档中name字段的唯一值。它还使用comment选项向操作添加注释。

results = restaurants.distinct("name",
{ "borough": "Bronx",
"cuisine": "Pizza" },
comment="Bronx pizza restaurants"
)
$1.25 Pizza
18 East Gunhill Pizza
2 Bros
Aenos Pizza
Alitalia Pizza Restaurant
...

要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下API文档

返回

计数文档