sql >> Base de Datos >  >> NoSQL >> MongoDB

Frasco y MongoDB - For Loop no funciona

Es posible que desee utilizar find_one() en lugar de find() que devuelve un cursor a los documentos que coinciden con los criterios. find_one() devuelve un solo documento que luego se puede usar en el diccionario, en lugar de un cursor:

example = mongo.db.example
doc = example.find_one()

details = { 'name' : doc['name'], 'lastname' : doc['lastname'] }

return render_template('blabla.html', details=details)

O

example = mongo.db.example
details = example.find_one({}, {'name':1, 'lastname':1})

return render_template('blabla.html', details=details)

Y tu plantilla será

<tr>
    <td>{{ details['name'] }}</td>
    <td>{{ details['lastname'] }}</td>
</tr>

Si desea iterar toda la colección y devolver una lista de documentos con solo el name y lastname campos, debe usar find() método. Si tiene un conjunto de datos relativamente pequeño, el siguiente código convertirá todo el conjunto de resultados (Cursor) en una lista (todo se extrae en la memoria):

example = mongo.db.example
details = list(example.find({}, {'name': 1, 'lastname': 1}))

return render_template('blabla.html', details=details)

Luego repite la lista en tu plantilla

{% for doc in details}
<tr>
    <td>{{ doc['name'] }}</td>
    <td>{{ doc['lastname'] }}</td>
</tr>
{% endfor %}