在Mongoengine中的ReferenceField上聚合

时间:2013-06-26 13:11:59

标签: python aggregation mongoengine

在我的应用中,我有一个跟踪网站活动的模型:

class FeedItem(Document):
    user = ReferenceField('User')
    link = ReferenceField('Link')
    issue = ReferenceField('Threat')
    action = StringField(required=True, max_length=1000)
    datetime = DateTimeField(required=True)

...我会跟踪用户对内容的所作所为。

我正在尝试创建一个“顶级用户”列表,我在那里汇总了贡献最多的用户列表(至少在初始时,根据他们在日志中显示的次数确定)

我试过了:

user_freqs = FeedItem.objects.item_frequencies('user', normalize=True)
top_users = sorted(user_freqs.items(), key=itemgetter(1), reverse=True)[:10]

(基于this example

但我意识到这不起作用,因为item_frequencies()不适用于ReferenceFields。

我是新手,我有点失落。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

我建议使用原始pymongo和聚合框架,它是FeedItem.user$sum上的一个简单组。