• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

155
Vistas
How to convert MotorLatentCommandCursor to list

I use Motor driver of mongoDB in my django project and I have problem to convert my data(who comes from database as cursor) to list, here is my code:

documents = db.factor.aggregate([{"$limit": 3},
     {"$lookup": {"from": "subfactor", "localField": "_id", "foreignField": "factor_id", "as": "subfactor"}}])

for d in await list(documents):
    print(d)

and the Error:

File "/usr/lib/python3.8/asyncio/runners.py", line 43, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.8/asyncio/base_events.py", line 595, in run_until_complete
self.run_forever()
File "/usr/lib/python3.8/asyncio/base_events.py", line 563, in run_forever
self._run_once()
File "/usr/lib/python3.8/asyncio/base_events.py", line 1808, in _run_once
event_list = self._selector.select(timeout)
File "/usr/lib/python3.8/selectors.py", line 468, in select
fd_event_list = self._selector.poll(timeout, max_ev)
over 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

I don't know Motor but a quick check in their docs shows this:

Cursor is async iterable, so you can use async for to iterate:

async for document in db.test_collection.find({'i': {'$lt': 2}}):
    pprint.pprint(document)

You can turn this into a list with a async list comprehention:

items = [x async for x in db.test_collection.find({'i': {'$lt': 2}})]

Also they have helper functions to convert a cursor to an awaitable list:

items = await db.test_collection.find({'i': {'$lt': 2}}).to_list(length=100)
over 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda