【问题标题】:Removing undefined from MongoDB array从 MongoDB 数组中删除未定义
【发布时间】: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


【解决方案1】:
db.collection.update(
 {},
 {$pull: {"address.coord":{$type: 6}}},
 {multi:true}

)

有关更多详细信息,请参阅 type 和 pull 运营商。 它将根据您的要求删除所有 undefined 匹配项。如果您的文档结构有嵌套数组,请使用$[] 位置运算符。

【讨论】:

    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2016-04-06
    • 2019-10-22
    • 1970-01-01
    • 2015-06-12
    • 2013-06-08
    • 2013-03-16
    相关资源
    最近更新 更多