0

我想计算一个字段中所有不同值的数量。在mongoengine中没有“annotate()”可以使用,那么我怎么能计算数字并按数字排序

我想解决这个问题的唯一方法是使用“distinct()”找出不同的值,然后使用“count()”计算每个值,这是实现我想要的结果的愚蠢方法

你还有其他方法吗?

4

2 回答 2

4

MongoEngine 有一些地图减少助手应该可以满足您的需求。Queryset 方法item_frequencies[1] 将满足您的需求。新的聚合框架没有任何特殊支持,但将来可能会添加支持。

示例用法:

BlogPost.objects.item_frequencies('tags')

[1] http://docs.mongoengine.org/en/latest/apireference.html?highlight=item_frequencies#mongoengine.queryset.QuerySet.item_frequencies

于 2012-11-21T09:40:32.010 回答
1

MongoEngine 本身并没有特殊的方法来实现这一点,但是 MongoDB 2.2 聚合框架允许您对文档进行计数,按字段分组。我建议直接使用 PyMongo 的聚合方法和聚合管道来执行此查询:

http://api.mongodb.org/python/current/examples/aggregation.html

于 2012-11-20T20:08:33.747 回答