この類似の 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()
と、クエリに一致するドキュメントが返されます。
mongodb
したがって、次のクエリでは、配列 fieldにタグを持つドキュメント (Post オブジェクト) の配列を取得します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