Solución:
los find
el método devuelve un Cursor
instancia, que le permite iterar sobre todos los documentos coincidentes.
Para obtener el primer documento que coincida con los criterios dados, debe usar find_one
. El resultado de find_one
es un diccionario.
Siempre puedes usar el list
constructor para devolver una lista de todos los documentos de la colección, pero tenga en cuenta que esto cargará todos los datos en la memoria y puede que no sea lo que desea.
Debe hacerlo si necesita reutilizar el cursor y tiene una buena razón para no usar rewind()
Demostración usando find
:
>>> import pymongo
>>> conn = pymongo.MongoClient()
>>> db = conn.test #test is my database
>>> col = db.spam #Here spam is my collection
>>> cur = col.find()
>>> cur
<pymongo.cursor.Cursor object at 0xb6d447ec>
>>> for doc in cur:
... print(doc) # or do something with the document
...
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}
{'a': 1, 'c': 3, '_id': ObjectId('54ff32a2add8f30feb902690'), 'b': 2}
Demostración usando find_one
:
>>> col.find_one()
{'a': 1, '_id': ObjectId('54ff30faadd8f30feb90268f'), 'b': 2}
Fácil
import pymongo
conn = pymongo.MongoClient()
db = conn.test #test is my database
col = db.spam #Here spam is my collection
array = list(col.find())
print array
Ahí tienes
Sugiero crear una lista y agregarle un diccionario.
x = []
cur = db.dbname.find()
for i in cur:
x.append(i)
print(x)
Ahora x es una lista de diccionario, puede manipular el mismo de la forma habitual en Python.