MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Flask &MongoDB - For Loop не работи

Може да искате да използвате find_one() вместо find() който връща курсор към документите, които отговарят на критериите. find_one() връща един документ, който след това може да се използва в речника, вместо курсор:

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

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

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

Или

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

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

И вашият шаблон ще бъде

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

Ако искате да повторите цялата колекция и да върнете списък с документи само с name и lastname полета, тогава трябва да използвате find() метод. Ако имате сравнително малък набор от данни, следният код ще преобразува целия набор от резултати (курсор) в списък (всичко се изтегля в паметта):

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

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

След това итерирайте списъка във вашия шаблон

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Неуспешна инсталация на MongoDB в Ubuntu 14.04

  2. Има ли сравнение на NoSQL решения (кое е по-добро в определени ситуации?)

  3. Как да извлечете/намерите всички елементи на вложен масив в MongoDB Java

  4. Връзката с MongoDb е отказана

  5. JSR223 (Groovy) няма достъп до MongoDB(3.0.3) в Jmeter(2.13)