来源:《MongoDB权威指南》第2版,8.2.1节。
在文档中存在一个数组字段,并且这个数组字段会有push操作时,如果不做优化,可能每次push时,会造成“文档移动”,这回降低写入速度。
优化的方式是:
1.数组字段要放在文档的末尾。
2.在数组字段之后,添加一个足够长的“占位字段”。当对数组push的时候,对这个“占位字段”执行unset。
上面这两点是《MongoDB权威指南》中的论点。我认为可以补充一点:当push的时候,执行unset会把消除所有占位空间。如果push的数据的长度是10字节,而“占位字段”有50字节,那会发生什么呢?所以我觉得对“占位字段”,也可以执行update操作,仅仅缩短这个字段就可以了。