MongoDB如何用$unset移除嵌套数组中的字段?
解决MongoDB嵌套数组字段移除问题
你的文档结构里computers和users都是数组,直接用"computers.users.name"的路径无法让MongoDB定位到数组内的元素,所以modifiedCount为0。要移除所有嵌套数组里的name字段,需要使用MongoDB的**数组通配符$[]**来遍历所有数组元素,具体写法如下:
db.collection.updateMany( {}, { $unset: { "computers.$[].users.$[].name": "" } } )
原理说明:
computers.$[]表示匹配computers数组里的所有元素- 嵌套的
users.$[]表示匹配每个computers元素下users数组里的所有元素 - 最终
$unset会移除所有符合路径的name字段
注意:这个写法要求MongoDB版本在3.6及以上,该版本开始支持嵌套数组的通配符操作。
内容的提问来源于stack exchange,提问作者krzysiekcr
相关产品推荐
相关产品推荐

