【发布时间】:2018-03-24 12:18:37
【问题描述】:
我使用在服务器端执行的脚本(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
问题:在这种情况下如何删除元素?
【问题讨论】:
-
你试过
db.collection.updateMany({}, {"$pull": { "array": undefined }});吗? -
@kadiii 在下面添加了我的答案,看看..
标签: mongodb