Mongoengine获取最新()

Ani*_*non 7 python django mongodb pymongo mongoengine

在django中如果我使用MongoEngine,如何获取查询集的最新实例

通常我们这样做

Users.objects.latest('id')
Run Code Online (Sandbox Code Playgroud)

但我不能latest在MongoEngine中使用.

;).我陷入了困境.

我在这里找不到解决方案.但我已经实施了.你对下面的意见怎么样?

Users.objects.all().order_by('-id').limit(1)[0] 
Run Code Online (Sandbox Code Playgroud)

这将返回最新的实例.

并通过将其交给mongoenngine来解决问题.

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

您可以安装并使用

 Users.objects.latest('id')
Run Code Online (Sandbox Code Playgroud)

Ros*_*oss 10

你可以这样做:

Users.objects.order_by('-id').first()
Run Code Online (Sandbox Code Playgroud)


小智 5

罗斯的回答已经足够好了。

但是如果你真的需要一个latest(),实现一个自定义的 QuerySet 可以做到这一点。

“装饰器”方式:

class Users(Document):
    username = StringField()

    @queryset_manager
    def latest(doc_cls, queryset):
        return queryset.order_by('-id').first()
Run Code Online (Sandbox Code Playgroud)

“元”方式:

class UsersQuerySet(QuerySet):

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

class Users(Document):
    meta = {'queryset_class': UsersQuerySet}
Run Code Online (Sandbox Code Playgroud)

现在你可以:

Users.objects.latest()
# or
Users.latest()
Run Code Online (Sandbox Code Playgroud)