sql >> Databasteknik >  >> NoSQL >> MongoDB

Flask &MongoDB - For Loop fungerar inte

Du kanske vill använda find_one() istället för find() som returnerar en markör till de dokument som matchar kriterierna. find_one() returnerar ett enda dokument som sedan kan användas i ordboken, istället för en markör:

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

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

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

Eller

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

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

Och din mall kommer att vara

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

Om du vill iterera hela samlingen och returnera en lista över dokument med bara name och lastname fält, så ska du använda find() metod. Om du har en relativt liten datauppsättning kommer följande kod att konvertera hela resultatuppsättningen (markören) till en lista (allt dras in i minnet):

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

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

Iterera sedan listan i din mall

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


  1. Programmatisk uppdatering av fält i Mongo och Meteor

  2. Hur kan jag använda MongoDB med Flask?

  3. Hur skapar jag ett JSON-flöde från en MongoDB-samling

  4. Hur man ställer in gräns för arraystorlek i Mongoose-schema