jinja2收集和计算相同的字符串

时间:2015-12-21 18:59:51

标签: python mongodb jinja2 mongoengine flask-mongoengine

我想在来自数据库的前端或我的视图页面收集相同的标签。标签正在列表中收集。

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 个答案:

答案 0 :(得分:1)

mongoengine QuerySet.distinctQuerySet.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}