jinja2 собирая и считая одни и те же строки
Я хочу собрать те же теги на внешнем интерфейсе или странице просмотра, поступающей из базы данных. Теги накапливаются в списке.
model.py
class Note(Document):
tags = db.ListField(db.StringField())
Пример данных MongoDB:
"notes" : [
{
"title":"lipsum",
"content":"lipsum",
"tags" : [
"python",
"OOP",
"mongoengine"
]
},
{
"title":"lipsum2",
"content":"lipsum2",
"tags" : [
"sql",
"functional",
"mongoengine",
"python"
]
}
Как я могу получить следующий результат из jinja2, python, flask.ext или самого mongoengine?
mongoengine 2
OOP
functional
python 2
sql
Спасибо за ваши предложения.
1 ответ
Монго двигатель QuerySet.distinct
а также QuerySet.count
функции могут быть вашими друзьями здесь:
tag_counts = {}
tag_names = Note.objects.distinct('tags')
for tag in tag_names:
tag_counts [tag] = Note.objects(tags=tag).count()
или в одну строку:
dict([(tag, Note.objects(tags=tag).count()) for tag in Note.objects.distinct('tags')])
Они оба составляют этот словарь:
{'OOP':1, 'mongoengine':2 ,'python': 2, 'functional':1, 'sql':1}