1

Tornado'da MongoDB toplaması işlemini yürütmek için sorun yaşıyorum. BuTornado/Motor'da Atamalama Başarısız Oldu: bilinmeyen bir nesne oluştu MotorAggregationCursor

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) 

aynı komutu çalıştırır gayet iyi üzerinde MongoDB yönetim aracı (ı MongoChef kullanıyorum), kodudur. Ama Python Tornado üzerinde, "verim" zaman uyumsuz işlemi kullanılarak, bu

yielded unknown object MotorAggregationCursor(<motor.core._LatentCursor object at 0x00000000042DEA58>) 

bir fikrin olarak istisna atar? Daha fazla hata ayıklamak için ipucum var ... teşekkürler

cevap

1

Gerçek .aggregate() yöntemi "async" değil. Ancak imleç yineleme.

Bunun yerine:

cursor = db.activities.aggregate(pipeline) 
while (yield cursor.fetch_next): 
    doc = cursor.next_object() 
    print(doc) 

dokümanlar demek gibi.

İlgili konular