python - Mongoengine..反转ListField中的项目

标签 python django mongodb mongoengine

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')

有没有办法通过嵌入文档的日期反转ListField? 或者 只是反转列表字段?

最佳答案

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

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

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

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

关于python - Mongoengine..反转ListField中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544030/

相关文章:

python - 为什么我不能使用 Django 管理应用程序的资源

python - 通过 Gunicorn 运行 manage.py 命令

python - 为 Django 测试生成内存图像

c# - mongoDB 的问题。类型的属性 '_id' ... 不能使用元素名称 '_id'

python - 为什么我不能在 Django Rest Framework 的 ModelViewSet 上使用 @action 装饰器

python - 如何编写一个正则表达式来查找除了 2000、1990 或 1234 等 4 位数字之外的所有内容?

python : List + lambda behaviour

java - 如何从 scala (casbah) 访问 mongoDB 中的二进制数据

MongoDB 显示错误 : version too new for this mongod

python - 如何在Pandas数据框中的其他列中填充基于新列的值