2016-04-09 2 views
3

Я новичок в Python и MongoDB, и я начинаю новый проект с флеш-питоном и MongoDB. При попытке возврата данных с помощью функции aggregate(), он дает мне следующую ошибку:объект command cursor 'не подлежит индексированию

command cursor' object is not subscriptable.

Вот мой код запроса:

Data = db.mytable.aggregate([ { "$group": {"_id": "$Name" ,"count": { "$sum": 1 }}}]) 
return Data['result'] 

Я также изменил это:

Data = db.mytable.aggregate([ { "$group": {"_id": "$Name" ,"count": { "$sum": 1 }}}],userCursor= False) 

, но это вызывает у нас ошибку:

error.pymongo.errors.OperationFailure: command SON([('aggregate', 'mytable'), ('pipeline', [{'$group': {'_id': '$Name', 'count': {'$sum': 1}}}]), ('useCursor', False)]) on namespace mydb.$cmd failed: unrecognized field 'useCursor

Примечание: Я использую MongoDB 3.2 и python3

ответ

4

С PyMongo 3.0, метод .aggregate() возвращают CommandCursor, который не реализует метод __getitem__(). Вместо этого я предлагаю вам вернуть объект cursor в вашу функцию/метод или обратиться к результату в следующем виде: return list(Data)

+0

, но я возвращаю список (данные) его значение value ['waitedMS', 'ok', 'result' ] –

+1

Это происходит только в версии до 3.0, в этом случае 'Data ['result']' отлично работает. В чем версия Pymongo? – styvane

+0

Я использую pymongo 2.8 –

Смежные вопросы