拥有这个类似的 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()
你将存储这个:
{
"tags": [ "mongodb", "mongoengine" ],
"title": "Fun with MongoEngine"
}
{
"tags": [ "mongodb" ],
"title": "Loving Mongo"
}
在 MongoDB 中,当您运行find()
它时,它会返回与您的查询匹配的文档。
因此,通过以下查询,您将获得一个文档数组(Post 对象),其标签mongodb
位于数组 field 中tags
。(实际上,'tag' 数组与一个空字符串连接,如果包含值 'mongodb' 则匹配):
Post.objects(tags__contains='mongodb')
(过滤器只是对象构造函数的别名)
因此,在获得项目频率之后,您需要获得您感兴趣的那些。
tag_cloud = Post.objects(tags__contains='mongodb').item_frequencies('tags')
> print tag_cloud
{'mongodb': 2, 'mongoengine': 1}
> tag_cloud['mongodb']
2