MongoEngine сортировка вложенных документов - PullRequest
2 голосов
/ 16 января 2012

У меня есть текущая модель в MongoEngine:

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

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

Я получаю все свои сообщения, как это:

posts = Post.objects.all()

и затем я могу перебирать сообщения и комментарии, но получать список post.comments.

Но я не уверен, как отсортировать список комментариев для каждого поста по дате. Я знаю, что комментарии добавляются в хронологическом порядке по умолчанию, но как мне переключаться между порядками комментариев по возрастанию / убыванию, т.е. сначала с последним комментарием?

Я пробовал мета-свойство безрезультатно:

meta = {
    'ordering': ['-pub_date']
}

Мысли

1 Ответ

3 голосов
/ 16 января 2012

SortedListField гарантирует, что коллекция будет отсортирована перед записью в базу данных, поэтому в этом случае mongo не выполняет никакой сортировки.Если они отсортированы в хронологическом порядке, почему бы вам просто не перевернуть список, чтобы выполнить итерацию в обратном хронологическом порядке?:)

...