mongoengine + django如何计算相同内容的项目数

时间:2012-11-20 07:47:33

标签: django mongodb mongoengine

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

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

你有其他方法吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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