Mongodb嵌入文档作为相关字段的容器

Mongodb嵌入文档作为相关字段的容器,mongodb,performance,mongoengine,Mongodb,Performance,Mongoengine,使用mongodb嵌入式文档将相关字段组合在一起可以吗 示例:文档具有字段creator\u id和creator\u language,是否可以将其替换为嵌入文档creator,其中包含字段id和language,而不影响性能 我找不到任何关于嵌入式文档如何存储的信息,除了它没有集合并且绑定到父文档这一事实外,EmbeddedDocument只是文档中的嵌套对象。这在mongodb中是非常标准的,因此切换到mongodb是非常好的。如果您开始使用成百上千的嵌套结构,您可能会观察到mongoen

使用mongodb嵌入式文档将相关字段组合在一起可以吗

示例:文档具有字段
creator\u id
creator\u language
,是否可以将其替换为嵌入文档
creator
,其中包含字段
id
language
,而不影响性能


我找不到任何关于嵌入式文档如何存储的信息,除了它没有集合并且绑定到父文档这一事实外,EmbeddedDocument只是文档中的嵌套对象。这在mongodb中是非常标准的,因此切换到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
  }
}