如何通过mongoengine中的主键获取文档?

How to get a document by its primary key in mongoengine?

我正在将应用程序从 App Engine 的 ndb 移植到 mongoengine。 ndb提供了Model.get_by_id方法,我想用mongoengine来实现。那么如何通过自动生成的 ID 或 primary_key 设置为 True 的任何字段来获取文档?

查看 http://docs.mongoengine.org/guide/querying.html

答案很简单:

Model.objects(id='your-id')

我假设您知道主键字段的名称。

您可以使用 with_id():

class MyDocument(Document):
    ...
    @classmethod
    def get_by_id(cls, id):
        return cls.objects.with_id(id)

这将 return 文档实例(如果存在)或 None(如果不存在)。

使用with_id。它专门用于此目的。

Model.objects.with_id('your-id')

它returns None 如果没有找到对象。

但请确保您没有设置过滤器(就像 filter method 一样),因为它会引发 InvalidQueryError.