2013-07-25 62 views
24

我正在尋找正確的方法從數組中刪除字段MongoDB中的所有元素(所有文檔) - 這些似乎是等價的,這是推薦:Mongodb - 正確的方法來刪除數組字段中的所有元素?

db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true}) 
(或者是一些其他的方式?)

db.collection.update({}, { $set : {'myArray': [] }} , {multi:true}) 

回答

22

$set變種會更快爲$pull將不得不做的陣列計算。實際上,我甚至不確定它是否可以工作,因爲您並沒有真正刪除查詢中的任何元素。

3

只是爲了確保,你需要保持一個空陣列?因爲否則,它可能更好$unset它。

如果你必須保持一個空數組,我相信你$pull通話將無法正常工作 - 我認爲它會從你的陣列,而不是所有元素刪除所有空元素。

2

據MongoDB的正式文件:

當$用於匹配數組元素,$未設置替換 匹配的元素與空,而不是從陣列中刪除匹配的元素 。這種行爲保持數組大小和元素位置一致。

$集應該是正確的方法。

相關問題