1

no fetch_nextMotor の集計関数で例外が発生して困っています

コードは

cursor = db[collection].aggregate(myPipeline, cursor = {} )

if (yield cursor.fetch_next):
    obj = bson.json_util.dumps(cursor.next_object())
    self.write(obj)

それは次のことを引き起こしました

例外: :'TracebackFuture' オブジェクトに属性 'fetch_next' がありません

次に、SOの質問で見つかった次のことを試しました

 cursor = yield motor.Op(db[collection].aggregate, x_query)

それは同じ例外を提供しました。

Mongo シェルで集計を実行すると、正真正銘の結果が得られます

"result" : [
    {
        "_id" : "Adam",
        "num" : 110
    },
    {
        "_id" : "Argyle",
        "num" : 77
    },
    {
        "_id" : "Net Valley",
        "num" : 67
    },
    {
        "_id" : "Notts Farm",
        "num" : 64
    },
    {
        "_id" : "Sam's Place",
        "num" : 59
    },
    {
        "_id" : "Tilly",
        "num" : 58
    },
    {
        "_id" : "Xavier",
        "num" : 52
    }
],
"ok" : 1

Motor はfind、`find_one でそのような問題を提供していません。実際、それ以外の場合は素晴らしく機能します。

インストールはpip install motorUbuntuで行いました。

乾杯

4

1 に答える 1

3

申し訳ありませんが、ドキュメントが間違っています。"aggregate" は Future を返します。カーソルを取得するには Future を譲らなければなりません:

cursor = yield db[collection].aggregate(myPipeline, cursor={})

if (yield cursor.fetch_next):
    obj = bson.json_util.dumps(cursor.next_object())
    self.write(obj)

次のリリースでこの問題を追跡するために、チケットMOTOR-34を割り当てました。

于 2014-06-09T20:02:40.037 に答える