Mongodb 嵌入文档作为相关字段的容器
Mongodb embedded document as a container for related fields
可以使用mongodb嵌入文档将相关字段组合在一起吗?
示例:文档具有字段 creator_id
和 creator_language
,是否可以将它们替换为包含字段 id
和 [=15] 的嵌入文档 creator
=] 没有性能影响?
我没能找到关于嵌入文档如何存储的任何信息,除了它没有集合并且与父文档相关联这一事实
EmbeddedDocument 只是文档中的嵌套对象。这在 mongodb 中是非常标准的,因此切换到它非常好。如果您开始拥有成百上千个嵌套结构,您可能会观察到 mongoengine 对性能的影响,但看起来这不是您的计划。
存储空间见下文
class DateOfBirth(EmbeddedDocument):
year = IntField()
month = IntField()
day = IntField()
class Person(Document):
name = StringField()
dob = EmbeddedDocumentField(DateOfBirth)
Person(name='John', dob=DateOfBirth(day=1, month=12, year=2000)).save()
将存储这样一个对象:
# print(Person.objects.as_pymongo().first())
{
'_id': ObjectId('5d2decf7d8eefe0e58da364d'),
'name': 'John',
'dob': {
'year': 2000,
'month': 12,
'day': 1
}
}
可以使用mongodb嵌入文档将相关字段组合在一起吗?
示例:文档具有字段 creator_id
和 creator_language
,是否可以将它们替换为包含字段 id
和 [=15] 的嵌入文档 creator
=] 没有性能影响?
我没能找到关于嵌入文档如何存储的任何信息,除了它没有集合并且与父文档相关联这一事实
EmbeddedDocument 只是文档中的嵌套对象。这在 mongodb 中是非常标准的,因此切换到它非常好。如果您开始拥有成百上千个嵌套结构,您可能会观察到 mongoengine 对性能的影响,但看起来这不是您的计划。
存储空间见下文
class DateOfBirth(EmbeddedDocument):
year = IntField()
month = IntField()
day = IntField()
class Person(Document):
name = StringField()
dob = EmbeddedDocumentField(DateOfBirth)
Person(name='John', dob=DateOfBirth(day=1, month=12, year=2000)).save()
将存储这样一个对象:
# print(Person.objects.as_pymongo().first())
{
'_id': ObjectId('5d2decf7d8eefe0e58da364d'),
'name': 'John',
'dob': {
'year': 2000,
'month': 12,
'day': 1
}
}