MongoDB findAndModify 中的 $concatArrays
MongoDB $concatArrays in findAndModify
我想知道 findAndModify
的更新部分中的 $concatArrays
是否会复制源数组,向其中添加新元素并将结果保存到目标数组,还是只是追加没有提到的副本的现有数组的新元素。
为了更好地说明,这里有一个例子:
db.myCollection.findAndModify ( { _id: 2 },
[ { $set: { myArray: { $concatArrays: [ "$myArray", [ 1, 2 ] ] } } } ]
)
Mongo 够聪明吗?只需将 [1, 2]
附加到 myArray
而无需首先复制 myArray
?
正在执行的操作类型不相关。
BSON objects以压缩格式存储,所以改变数据大小肯定需要获得稍大的缓冲区,将原始数据复制到新位置,然后应用更改。
底层存储引擎将原始文档以不可变的格式存储在其缓存中,以及已进行更改的跳过列表。跳过列表与原始文档协调并在检查点或逐出期间存储在磁盘上。
我想知道 findAndModify
的更新部分中的 $concatArrays
是否会复制源数组,向其中添加新元素并将结果保存到目标数组,还是只是追加没有提到的副本的现有数组的新元素。
为了更好地说明,这里有一个例子:
db.myCollection.findAndModify ( { _id: 2 },
[ { $set: { myArray: { $concatArrays: [ "$myArray", [ 1, 2 ] ] } } } ]
)
Mongo 够聪明吗?只需将 [1, 2]
附加到 myArray
而无需首先复制 myArray
?
正在执行的操作类型不相关。
BSON objects以压缩格式存储,所以改变数据大小肯定需要获得稍大的缓冲区,将原始数据复制到新位置,然后应用更改。
底层存储引擎将原始文档以不可变的格式存储在其缓存中,以及已进行更改的跳过列表。跳过列表与原始文档协调并在检查点或逐出期间存储在磁盘上。