MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Flask &MongoDB - For Loop não está funcionando


Você pode usar find_one() em vez de find() que retorna um cursor para os documentos que correspondem aos critérios. find_one() retorna um único documento que pode ser usado no dicionário, em vez de um cursor:
example = mongo.db.example
doc = example.find_one()

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

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

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

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

E seu modelo será
<tr>
    <td>{{ details['name'] }}</td>
    <td>{{ details['lastname'] }}</td>
</tr>

Se você deseja iterar toda a coleção e retornar uma lista de documentos com apenas o name e lastname campos, então você deve usar o find() Se você tiver um conjunto de dados relativamente pequeno, o código a seguir converterá todo o conjunto de resultados (Cursor) em uma lista (tudo é puxado para a memória):
example = mongo.db.example
details = list(example.find({}, {'name': 1, 'lastname': 1}))

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

Em seguida, itere a lista em seu modelo
{% for doc in details}
<tr>
    <td>{{ doc['name'] }}</td>
    <td>{{ doc['lastname'] }}</td>
</tr>
{% endfor %}