我正在尋找正確的方法從數組中刪除字段MongoDB中的所有元素(所有文檔) - 這些似乎是等價的,這是推薦:Mongodb - 正確的方法來刪除數組字段中的所有元素?
db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true})
(或者是一些其他的方式?)
或
db.collection.update({}, { $set : {'myArray': [] }} , {multi:true})
我正在尋找正確的方法從數組中刪除字段MongoDB中的所有元素(所有文檔) - 這些似乎是等價的,這是推薦:Mongodb - 正確的方法來刪除數組字段中的所有元素?
db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true})
(或者是一些其他的方式?)
或
db.collection.update({}, { $set : {'myArray': [] }} , {multi:true})
的$set
變種會更快爲$pull
將不得不做的陣列計算。實際上,我甚至不確定它是否可以工作,因爲您並沒有真正刪除查詢中的任何元素。
只是爲了確保,你需要保持一個空陣列?因爲否則,它可能更好$unset
它。
如果你必須保持一個空數組,我相信你$pull
通話將無法正常工作 - 我認爲它會從你的陣列,而不是所有元素刪除所有空元素。
據MongoDB的正式文件:
當$用於匹配數組元素,$未設置替換 匹配的元素與空,而不是從陣列中刪除匹配的元素 。這種行爲保持數組大小和元素位置一致。
$集應該是正確的方法。