如何解决findAndModify中的MongoDB $ concatArrays
我想知道$concatArrays
的更新部分中的findAndModify
是否将复制源数组,向其中添加新元素并将结果保存到目标数组,还是只是追加新的没有提到的副本的现有数组中的元素。
为了更好地说明它,下面是一个示例:
db.myCollection.findAndModify ( { _id: 2 },[ { $set: { myArray: { $concatArrays: [ "$myArray",[ 1,2 ] ] } } } ]
)
Mongo是否足够聪明,或者只需将[1,2]
附加到myArray
而不首先复制myArray
?
解决方法
正在执行的操作类型无关。
BSON objects以打包格式存储,因此更改数据大小肯定需要获得稍大的缓冲区,然后将原始副本复制到新位置并应用更改。
基础存储引擎以不变的格式将原始文档以及已更改的跳过列表存储在其缓存中。跳过列表与原始文档一致,并在检查点或逐出期间存储在磁盘上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。