fce*_*uti 7 python django mongodb mongoengine
我正在使用mongoengine,我有以下情况,
我的模特:
class Item(Document):
...
tags = ListField(StringField(max_length=30))
Run Code Online (Sandbox Code Playgroud)
查询:
filters = {
'tags__contains': query
}
tags_with_counter = Item.objects.filter(**filters).item_frequencies('tags')
Run Code Online (Sandbox Code Playgroud)
这将返回包含标记名称和频率的元组列表.我想要做的只是获取包含查询的标签及其各自的频率.我怎样才能做到这一点?
Gia*_* P. 16
拥有这个类似的MongoEngine模型和文档:
class Post(Document):
title = StringField()
tags = ListField(StringField())
post1 = Post(title='Fun with MongoEngine', tags=['mongodb', 'mongoengine']).save()
post2 = Post(title='Loving Mongo', tags=['mongodb']).save()
Run Code Online (Sandbox Code Playgroud)
你会存储这个:
{
"tags": [ "mongodb", "mongoengine" ],
"title": "Fun with MongoEngine"
}
{
"tags": [ "mongodb" ],
"title": "Loving Mongo"
}
Run Code Online (Sandbox Code Playgroud)
在MongoDB中,当您执行find()if文档与查询匹配时,将返回这些文档.
因此,当以下查询时,您将获得一个mongodb在数组标记中具有a的文档数组(Post对象).(实际上'tag'数组用空字符串连接,如果包含值'mongodb'则匹配):
Post.objects(tags__contains='mongodb')
Run Code Online (Sandbox Code Playgroud)
(filter只是对象构造函数的别名)
因此,在获得项目频率后,您需要获得您感兴趣的项目.
tag_cloud = Post.objects(tags__contains='mongodb').item_frequencies('tags')
> print tag_cloud
{'mongodb': 2, 'mongoengine': 1}
> tag_cloud['mongodb']
2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8005 次 |
| 最近记录: |