Mongoengine获取最新()

时间:2014-03-20 11:11:59

标签: python django mongodb pymongo mongoengine

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

通常我们会这样做

Users.objects.latest('id')

但我不能在MongoEngine中使用latest

;)。我陷入困境。

我在这里找不到解决方案。但我已经实施了。你对以下的看法是什么

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

这将返回最新的实例。

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

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

您可以安装它并使用

 Users.objects.latest('id')

2 个答案:

答案 0 :(得分:9)

你可以这样做:

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

答案 1 :(得分:1)

罗斯的答案足够好。

但是如果您确实需要latest(),则可以实现自定义QuerySet来实现。

“装饰器”方式:

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