文档首页 → 开发应用程序 → Python 驱动 → PyMongo
检索不同的字段值
概述
在集合中,不同的文档可能包含同一字段的不同值。例如,一个restaurant
文档的 borough
值为 "Manhattan"
,另一个的值为 "Queens"
。使用PyMongo,您可以检索集合中多个文档中字段的全部不同值。
示例数据
本指南中的示例使用来自Atlas 示例数据集的 sample_restaurants.restaurants
集合。有关如何创建免费MongoDB Atlas集群并加载示例数据集的信息,请参阅PyMongo 入门。
distinct()
方法
要获取指定字段的唯一值,请调用 distinct()
方法,并传入您想获取唯一值的字段名称。
跨集合检索唯一值
以下示例检索 restaurants
集合中 borough
字段的唯一值。
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 | 一个查询过滤器,用于指定从哪些文档中检索唯一值。 |
session | ClientSession 的一个实例。 |
comment | 要附加到操作的注释。 |
maxTimeMS | 允许操作运行的最大时间,以毫秒为单位。 |
collation | 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 文档
要了解更多关于本指南中讨论的任何方法或类型,请参阅以下API文档