Mongoengine 获取最新记录()

14 投票
2 回答
7017 浏览
提问于 2025-04-17 23:06

在Django中,如果我使用MongoEngine,怎么获取查询集的最新实例呢?

通常我们会这样做:

Users.objects.latest('id')

但是我在MongoEngine中不能使用latest

我现在有点卡住了。

我在这里没有找到解决方案,不过我自己实现了。你觉得下面的做法怎么样?

Users.objects.all().order_by('-id').limit(1)[0] 

这样可以返回最新的实例。

而且通过提交到MongoEngine解决了这个问题。

https://github.com/anishmenon/mongoengine/

你可以安装这个并使用:

 Users.objects.latest('id')

2 个回答

6

罗斯的回答已经很不错了。

不过如果你真的需要一个 latest() 方法,自己实现一个自定义的查询集是可以做到的。

“装饰器”方式:

class Users(Document):
    username = StringField()

    @queryset_manager
    def latest(doc_cls, queryset):
        return queryset.order_by('-id').first()

“元”方式:

class UsersQuerySet(QuerySet):

    def latest(self):
        return self.order_by('-id').first()

class Users(Document):
    meta = {'queryset_class': UsersQuerySet}

现在你可以:

Users.objects.latest()
# or
Users.latest()
25

你可以这样做:

Users.objects.order_by('-id').first()

撰写回答