请问老师:从一个文档的内嵌数组的头 push 的话,会有性能问题吗

来源:3-20 【删除文档】动手实战 - 原来你什么也不想要之删除文档与集合

小学生6年级

2020-12-13

mongoDB 会需要拷贝一整个数组空间后移吗,还是说只是把头指针换了个位置。

写回答

1回答

Stannum

2020-12-13

同学好~你的担心是对的。使用$push向数组的指定位置插入元素,是会重写数组的。这种重写还会涉及到索引的更新等其他数据库操作,所以对于大数组来说,这种$push操作的性能是不太好的。
我们一直在讨论操作层面的问题,但我其实建议你先思考一下设计层面的问题。你的文档结构是否可以再优化?能否通过改进文档结构来规避性能差的操作?

0
2
Stannum
回复
小学生6年级
从关系型数据库转向非关系型数据库需要思维上的转变。不要急慢慢来,多从设计层面思考问题,尽量不要陷入对语句和操作符的过分依赖。其实一个好的数据结构设计能规避很多的操作问题~
2020-12-13
共2条回复

玩转MongoDB4.0(最新版) 从入门到实践

30%理论+70%实战,用实操检验真理,一门让你事半功倍的入门进阶课

1138 学习 · 197 问题

查看课程