2
class Example(Document):
    comments =  ListField(field=EmbeddedDocumentField('Comment'), db_field='z')

class Comment(EmbeddedDocument):
    comment = StringField()
    date = DateTimeField()

如何通过 Comment EmbeddedDocument'date 反转评论列表字段的结果?我不正确的代码..就像..

Example.objects().order_by('-comments__date')

有没有办法通过 EmbeddedDocument 的日期来反转 ListField?或者只是反向列表字段?

4

2 回答 2

1

在 mongoDB 中,您返回与 find 语句匹配的项目。所以做一个:

Example.objects().order_by('-comments__date')

您只是Example在最新评论日期之前订购对象。查询语言用于匹配,因此不会更改返回列表的结果/顺序。如果需要确保顺序,您可以使用SortedListField确保列表在保存时排序。但是,这里可能存在竞争条件,因为它设置了整个列表。运算符是最好的$push,但这意味着注释将是一个堆栈,最旧的将附加到末尾。

在他们自己的集合中或在 mongoDB 2.2 中可能需要一个替代模式comments,聚合框架可用于对评论本身进行排序。

于 2012-03-05T08:18:36.377 回答
0

你应该试试:

Example.objects().order_by('-comments.date')
于 2012-03-03T09:03:07.210 回答