Tornado/Motor 聚合失败:生成未知对象 MotorAggregationCursor
Failed Aggregation on Tornado/Motor: yielded unknown object MotorAggregationCursor
我在对 Tornado 执行 MongoDB 聚合操作时遇到问题。这是代码,
pipeline = [
{'$match': {
'$or': [
{'owner.id': '56dfdaa4082024b9384c0055'},
{'members.top.member.id':'56dfdaa4082024b9384c0055'}
]
}},
{'$sort': {'date_s': -1}},
{'$skip': 0},
{'$limit': 20},
{'$project':{
'created_at': 1,
'name': 1,
'id': '$_id',
'group.group_id': 1,
'_id': 0,
'permission': 1,
'owner': 1,
'type': 1,
'members.total': 1,
'desc': 1,
'declared': 1
}}
]
cursor = yield db.activities.aggregate(pipeline)
相同的命令在 MongoDB 管理工具(我使用的是 MongoChef)上运行得非常好。但是在 Python Tornado 上,使用 "yield" 异步操作,它抛出异常
yielded unknown object MotorAggregationCursor(<motor.core._LatentCursor object at 0x00000000042DEA58>)
有什么想法吗?我缺少进一步调试的线索...谢谢
实际的 .aggregate()
方法本身并不是 "async"。但是游标迭代是。
所以改为:
cursor = db.activities.aggregate(pipeline)
while (yield cursor.fetch_next):
doc = cursor.next_object()
print(doc)
正如文档所说。
我在对 Tornado 执行 MongoDB 聚合操作时遇到问题。这是代码,
pipeline = [
{'$match': {
'$or': [
{'owner.id': '56dfdaa4082024b9384c0055'},
{'members.top.member.id':'56dfdaa4082024b9384c0055'}
]
}},
{'$sort': {'date_s': -1}},
{'$skip': 0},
{'$limit': 20},
{'$project':{
'created_at': 1,
'name': 1,
'id': '$_id',
'group.group_id': 1,
'_id': 0,
'permission': 1,
'owner': 1,
'type': 1,
'members.total': 1,
'desc': 1,
'declared': 1
}}
]
cursor = yield db.activities.aggregate(pipeline)
相同的命令在 MongoDB 管理工具(我使用的是 MongoChef)上运行得非常好。但是在 Python Tornado 上,使用 "yield" 异步操作,它抛出异常
yielded unknown object MotorAggregationCursor(<motor.core._LatentCursor object at 0x00000000042DEA58>)
有什么想法吗?我缺少进一步调试的线索...谢谢
实际的 .aggregate()
方法本身并不是 "async"。但是游标迭代是。
所以改为:
cursor = db.activities.aggregate(pipeline)
while (yield cursor.fetch_next):
doc = cursor.next_object()
print(doc)
正如文档所说。