Mongodb - 删除数组字段中所有元素的正确方法?

时间:2013-07-25 13:56:41

标签: mongodb

我正在寻找从Mongodb中的数组字段中删除所有元素的正确方法(在所有文档中) - 这些看起来是等效的,建议:(或者可能是其他方式?)

db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true} )

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

3 个答案:

答案 0 :(得分:25)

$set变体会更快,因为$pull必须对数组进行计算。我实际上甚至不确定它是否会起作用,因为你并没有真正删除查询中的任何元素。

答案 1 :(得分:3)

为了确保,你需要保持一个空阵列吗?因为否则,$unset它可能会更好。

如果您必须保留一个空数组,我相信您的$pull调用无效 - 我认为它将删除数组中的所有空元素,而不是所有元素。

答案 2 :(得分:2)

根据Mongodb的官方文件:

  

当与$一起使用以匹配数组元素时,$ unset将替换   匹配元素为null而不是删除匹配元素   从阵列。此行为保持数组大小和   元素位置。

$ set应该是正确的方式。