MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Flask &MongoDB - For Loop non funziona

Potresti voler utilizzare find_one() invece di find() che restituisce un cursore ai documenti che corrispondono ai criteri. find_one() restituisce un unico documento che può quindi essere utilizzato nel dizionario, invece di un cursore:

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

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

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

Oppure

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

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

E il tuo modello sarà

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

Se vuoi ripetere l'intera raccolta e restituire un elenco di documenti con solo il name e lastname campi, allora dovresti usare find() method.Se si dispone di un set di dati relativamente piccolo, il codice seguente converte l'intero set di risultati (Cursore) in un elenco (tutto viene inserito in memoria):

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

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

Quindi scorrere l'elenco nel modello

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