2016-04-09 22 views
3

私はPythonとMongoDBで新しく、flask-pythonとMongoDBで新しいプロジェクトを開始しています。私はaggregate()機能を使用してデータを返すしようとすると、それは私に次のエラーを与える:ここでコマンドカーソルのオブジェクトはサブスクリプトではありません

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

注:私はPymongo 3.0、.aggregate()方法以来のMongoDB 3.2とのpython3

答えて

4

を使用しています__getitem__()メソッドを実装していないCommandCursorを返します。代わりに、あなたの関数/メソッドにcursorオブジェクトを返すか、次のようなリストに結果を返すことをお勧めします:return list(Data)

+0

私は返すリスト(データ)の値を与えます['waitedMS'、 'ok'、 'result' ] –

+1

これは3.0以前のバージョンでのみ発生します。その場合、 'Data ['result']'はうまく動作します。あなたはPymongoのバージョンは何ですか? – styvane

+0

私はpymongoを使用しています。2.8 –

関連する問題