フィールド内のさまざまな値のすべての数を数えたい.mongoengineで使用する「annotate()」はありません。次に、どうすれば数を数えて番号で並べ替えることができますか
これを解決するために私が考えた唯一の方法は、「distinct()」を使用してさまざまな値を見つけてから、「count()」を使用して各値をカウントすることです。これは、私が望む結果を実現する愚かな方法です
他の方法はありますか?
フィールド内のさまざまな値のすべての数を数えたい.mongoengineで使用する「annotate()」はありません。次に、どうすれば数を数えて番号で並べ替えることができますか
これを解決するために私が考えた唯一の方法は、「distinct()」を使用してさまざまな値を見つけてから、「count()」を使用して各値をカウントすることです。これは、私が望む結果を実現する愚かな方法です
他の方法はありますか?
MongoEngine には、ニーズを満たす必要がある map reduce ヘルパーがいくつかあります。Queryset メソッドitem_frequencies
[1] がニーズを満たします。新しい集計フレームワークに対する特別なサポートはありませんが、将来サポートが追加される可能性があります。
使用例:
BlogPost.objects.item_frequencies('tags')
MongoEngine 自体にはこれを実現するための特別な手段はありませんが、MongoDB 2.2 集計フレームワークを使用すると、フィールドごとにグループ化されたドキュメントをカウントできます。このクエリを実行するには、PyMongo の集計メソッドを集計パイプラインで直接使用することをお勧めします。
http://api.mongodb.org/python/current/examples/aggregation.html