是否有 quick/optimal 方法来获取特定键的唯一值列表?

Is there a quick/optimal way to get a list of unique values for particular key?

我想为 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() 方法可以做到这一点。它 returns 给定键的不同值的数组(列表):

unqiue_values = collection.distinct("key")

MongoDB 有解决这个问题的内置方法:

db.collection.distinct(FIELD)