在MongoDB中,如果不使用嵌入式文档也能达到同样的目的,那么嵌入式文档的目的是什么?
In MongoDB, what is the purpose of embedded documents if the same thing can be achieved without using them?
例如
而不是名为 COLUMN_1
的字段,它包含一个包含字段 A、B 和 C 的嵌入文档。
为什么不使用名称为 COLUMN_1_A
、COLUMN_1_B
、COLUMN_1_C
.
的 3 个单独字段
在 mongoDB 中,您更喜欢以自然存在的方式处理文档
,当然你可以创建每次都可以翻译的例程和assemble/disasemble文档:
COLUMN_1:{A:X,B:Y,C:Z}
至:
COLUMN_1_A:X,COLUMN_1_B:Y,COLUMN_1_C:Z
但这是您不想每次都做的额外工作,您是一个懒惰高效的开发人员,更喜欢按使用方式存储您的 json 文档,除非有特定的用例这样做很有意义...... :)
另请注意,最多可以嵌入 100 个级别,但最大文档大小仍限制为 16MB,因此在您的文档模型中,您不应将所有数据库嵌入到单个文档中...
当您需要性能时,您可以添加索引并优化查询,这样您最常搜索的数据就会保留在内存中,如果您的字段是嵌入的,或者如果它们没有被索引,则在根目录中没有太大区别...
例如
而不是名为 COLUMN_1
的字段,它包含一个包含字段 A、B 和 C 的嵌入文档。
为什么不使用名称为 COLUMN_1_A
、COLUMN_1_B
、COLUMN_1_C
.
在 mongoDB 中,您更喜欢以自然存在的方式处理文档 ,当然你可以创建每次都可以翻译的例程和assemble/disasemble文档:
COLUMN_1:{A:X,B:Y,C:Z}
至:
COLUMN_1_A:X,COLUMN_1_B:Y,COLUMN_1_C:Z
但这是您不想每次都做的额外工作,您是一个懒惰高效的开发人员,更喜欢按使用方式存储您的 json 文档,除非有特定的用例这样做很有意义...... :)
另请注意,最多可以嵌入 100 个级别,但最大文档大小仍限制为 16MB,因此在您的文档模型中,您不应将所有数据库嵌入到单个文档中...
当您需要性能时,您可以添加索引并优化查询,这样您最常搜索的数据就会保留在内存中,如果您的字段是嵌入的,或者如果它们没有被索引,则在根目录中没有太大区别...