Mongoengine: Как отсортировать список встроенных документов по полю встроенного документа

5

Итак, что мне нужно, это что-то вроде:

class Comment(EmbeddedDocument):
    content = StringField()
    upvotes = IntField()
    pub_date = DateTimeField()

class Post(Document):
    title = StringField()
    comments = SortedListField(EmbeddedDocumentField(Comment))
    post_date = DateTimeField()

По умолчанию это сортируется по хронологическому порядку представления комментариев, но я хочу сделать сортировку SortedListField атрибутом upvotes встроенных комментариев. Возможно ли это, и если да, то как это сделать?

Теги:
mongoengine

1 ответ

5
Лучший ответ

Это фактически рассматривается в модульных тестах, если не ясно из документации:

class Post(Document):
    title = StringField()
    comments = SortedListField(EmbeddedDocumentField(Comment)
                               ordering="upvotes", reverse=True)
    post_date = DateTimeField()

Таким образом, добавление ключевого слова "ordering" позволяет поле сортировать, когда элементы будут изменены для указания. Вы, вероятно, также хотите, чтобы обратный оператор удостоверился, что первое значение "upvotes" также является первым.

В модульных тестах действительно показаны некоторые другие способы использования, поэтому они всегда являются хорошим источником для выяснения возможных неясных обычаев.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню