В моем приложении, у меня есть модель деятельности отслеживания сайта:Агрегирование на ReferenceField в 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.
Я новичок в этом, и я нахожусь в убытке. Любая помощь будет принята с благодарностью. Благодаря!
Спасибо. Мне сложно определить синтаксис для передачи aggregate() с использованием ключевого слова __raw__ - из документов, я могу видеть, как это сделать для более простых запросов. Вот что у меня есть, что неправильно: 'top_users = User.objects (__ __ сырым = совокупный ({....' Очевидно, я не понимая, как это должно работать (это мой первый раз, когда все ж из этого). Thx снова за вашей помощью. – nickgrossman
О, я думаю, вы на самом деле имеете в виду «raw pymongo», а не ключевое слово __raw__. Попробуем это. – nickgrossman
Да, это сработало. – nickgrossman