从MongoDB数组

时间:2018-03-23 11:35:23

标签: mongodb

我使用在服务器端执行的脚本(Mongo版本 - 3.4.10)向数组添加了未定义的值。

我们说我有像

这样的文件
{
   "array" : ["a","b", undefined]
}

我想删除未定义的元素。

当我像这样查询时

find({"array" :  {$elemMatch : {$in : [null], $exists : true} }})

它返回上面的文档 - Mongo将null和undefined视为相等。

但是,下面的更新查询不会按预期删除元素(适用于空值)

update({} ,{ $pull : {"array" : {$in : [null]} }}, {multi : true})

也不可能将undefined用作数学表达式

InMatchExpression equality cannot be undefined

问题:在这种情况下如何删除元素?

1 个答案:

答案 0 :(得分:2)

db.collection.update(
 {},
 {$pull: {"address.coord":{$type: 6}}},
 {multi:true}

)

参考type& pull 运营商了解更多详情。   它会根据您的要求删除所有undefined个匹配项。如果您的文档结构具有嵌套数组,请使用$[]位置运算符。