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()
,它只会列出动态的。
我开始在 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()
,它只会列出动态的。