python 文档的 mongoengine 键

python mongoengine keys of document

我开始在 Python 中使用 mongoengine 作为已建立集合上的文档对象映射。这些文件没有架构。现在对于开发、调试和应用程序中可能感兴趣的问题 fields/keys 对象 User 有什么。

是否有不同的方法可以实现相同的目的,而不是每次都查询文档?

class User(DynamicDocument):
    field_one = StringField()

    def keys(self):
        return type(self).objects.as_pymongo().filter(id=self.id).first().keys()

您可以为此使用 instance._data.keys(),它将结合已知字段和动态字段。

from mongoengine import *
connect()

class TestDoc(DynamicDocument):
    f1 = StringField()

# simulate document with dynamic fields
td1 = TestDoc(f1='garbage1')
td1.other_field = 'garbage2'
td1.other_field2 = 'garbage99'
td1.save()

# show how it looks in the database
print(TestDoc.objects.as_pymongo())    # [{'_id': ObjectId('...'), 'f1': 'garbage1', 'other_field': 'garbage2', 'other_field2': 'garbage99'}]

doc = TestDoc.objects.first()
print(doc._data.keys())    # ['f1', 'id', 'other_field', 'other_field2']

您还可以查看 instance._dynamic_fields.keys(),它只会列出动态的。