MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Flask &MongoDB - For-Schleife funktioniert nicht

Sie können find_one() statt find() die einen Cursor zu den Dokumenten zurückgibt, die den Kriterien entsprechen. find_one() gibt anstelle eines Cursors ein einzelnes Dokument zurück, das dann im Wörterbuch verwendet werden kann:

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

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

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

Oder

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

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

Und Ihre Vorlage wird sein

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

Wenn Sie die gesamte Sammlung durchlaufen und eine Liste von Dokumenten mit nur dem name zurückgeben möchten und lastname Felder, dann sollten Sie die find() Methode. Wenn Sie einen relativ kleinen Datensatz haben, konvertiert der folgende Code den gesamten Ergebnissatz (Cursor) in eine Liste (alles wird in den Speicher gezogen):

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

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

Iterieren Sie dann die Liste in Ihrem Template

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