python - 有没有一种快速/最佳的方法来获取特定键的唯一值列表?

标签 python mongodb pymongo

我想获取 MongoDB 中特定键的集合中的所有唯一值。我可以遍历整个集合来获取它们:

values = []
for item in collection.find():
    if item['key'] in values:
        pass
    else:
        values.append(item)

但这看起来效率极低,因为我必须检查每个条目,并且每次都循环遍历列表(随着值的数量变多,速度会变慢)。或者,我可以将所有值放在一个列表中,然后制作一个集合(我认为这更快,尽管我还没有尝试弄清楚如何测试速度):

values = []
for item in collection.find():
    values.append(item['key'])
unique_values = set(values)

或者使用列表理解:

unique_values = set([item['key'] for item in collection.find()])

但我想知道是否有一个不需要遍历整个集合的内置函数(比如这些值是否存储在哈希表或其他东西中),或者是否有更好的方法来实现这一点。

最佳答案

distinct()方法做到这一点。它返回给定键的不同值的数组(列表):

unqiue_values = collection.distinct("key")

关于python - 有没有一种快速/最佳的方法来获取特定键的唯一值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747198/

相关文章:

javascript - 如何在 ipython notebook 中运行交互式 jmol 或 jsmol 对象

Python 命令行复选框

python - Google Apps Engine 数据存储区搜索

mongodb - "The trait bound ` Bson : From<u128> ` is not satisfied" error when using the doc! 具有 u128 属性的宏

python - Numpy 矩阵的映射函数

node.js - mongoose 不使用 findById 返回输出

mongodb - Nodejs - websocket-node 模块 : How to make multi-client socket-server works?

python - Pymongo 使用 $in 查找列表

python - 优化: Dumping JSON from a Streaming API to Mongo

python - 如何在 pymongo 中使用 group 关键字连接数组