我想获取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()])
但是我想知道是否有一个内置函数不需要循环遍历整个集合(比如这些值是存储在哈希表中还是其他东西),或者是否有更好的方法来获取它。 / p>
答案 0 :(得分:4)
distinct()
方法执行此操作。它返回给定键的不同值的数组(列表):
unqiue_values = collection.distinct("key")
答案 1 :(得分:1)
MongoDB有一个针对此问题的内置方法:
db.collection.distinct(FIELD)