从 pymongo 加载单个字段作为数组

Load single field from pymongo as an array

我有一个包含 mongo 个对象的列表,我基本上想从中提取一个字段。

假设我的对象结构如下

[
    {'name': 'Lucy', age: '24'},
    {'name': 'Nicole', age: '22'},
    {'name': 'John', age: '28'},
]

我想从 PyMongo 加载格式为 ['Lucy', 'Nicole', 'Lauren'] 的数组。

一种方法就是简单地 python 列表理解:

names = [p['name'] for p in db.people.find({'age': {'$gt': 18}}, ['name'])]

这很好用,但如果有很多记录,速度会很慢。有更有效的方法吗?

只要不需要包含重复项,就可以通过在 find 查询返回的游标上调用 distinct 来实现:

names = db.people.find({'age': {'$gt': 18}}).distinct('name')