MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Flask &MongoDB - La boucle For ne fonctionne pas

Vous pouvez utiliser find_one() au lieu de find() qui renvoie un curseur sur les documents qui correspondent aux critères. find_one() renvoie un seul document qui peut ensuite être utilisé dans le dictionnaire, à la place d'un curseur :

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)

Et votre modèle sera

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

Si vous souhaitez itérer toute la collection et renvoyer une liste si les documents ne contiennent que le name et name champs, alors vous devez utiliser le find() Si vous avez un ensemble de données relativement petit, le code suivant convertira l'ensemble des résultats (curseur) en une liste (tout est mis en mémoire) :

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

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

Ensuite, itérez la liste dans votre modèle

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