我想在来自数据库的前端或我的视图页面收集相同的标签。标签正在列表中收集。
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
感谢您的建议。
答案 0 :(得分:1)
mongoengine 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}