从Pymongo查询中获取字符串数组

时间:2017-03-28 20:21:27

标签: python mongodb mongodb-query aggregation-framework pymongo

我需要使用字段' colname'中的值来获取数组。我无法返回Cursor,只返回值数组。

有没有办法查询这个数组而不必循环Cursor?我觉得这是浪费处理资源。

现在我正在这样做:

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
headers = client['headers']

entomo = headers.entomo

entomo_data = entomo.find()
entomo_array = []
for data in entomo_data:
    entomo_array.append(data['colname'])

然后我返回entomo_array

2 个答案:

答案 0 :(得分:1)

您可以通过$group <{1}} None文件.aggregate()方法执行此操作

cursor = entomo.aggregate([
    {'$group': {
        '_id': None, 
        'data': {'$push': '$colname'}
    }}
])

从那里,您只需使用next消费光标。

entomo_array = next(cursor)['data']

但如果&#39; colname&#39;在集合中是唯一的,您只需使用distinct方法。

entomo_array = entomo.distinct('colname')

答案 1 :(得分:0)

如果'colname'字段具有不同的值,或者如果您不关心重复值,则可以使用distinct函数。以你的例子:

entomo_array = entomo.find().distinct('colname')