mongo的特性之一就是非关系型数据库,支持子文档,那么子文档有什么问题呢?
子文档的问题
尽量不要在mongo中嵌入过大的数组文档,原因如下:
如果数组频繁变化,那么整个document代销会变化,会引起Mongo整理document,在磁盘上重新排列,而mongo的“document moves”很慢,这个移动操作会引起索引更新。
如果在内嵌的这个文档上建立索引,那么collection会为内嵌的文档每一个元素维护一个索引项,所以,如果你插入或者删除这个document,如果这个document的内嵌文档有100个元素,相当于mongo背后要做100次索引维护操作。
操作BSON数据结构是线性扫描的,所以,如果找一个在大子文档数组中,找最后一个元素,那么他就会扫描所有的元素,这样也会很慢。