arrays - 从 mongodb 数组中的所有元素中删除一个字段

标签 arrays mongodb

我在 MongoDB(2.4.5) 中有以下文档

{
    "_id" : 235399,
    "casts" : {
        "crew" : [ 
            {
                "_id" : 1186343,
                "withBase" : true,
                "department" : "Directing",
                "job" : "Director",
                "name" : "Connie Rasinski"
            },
            {
                "_id" : 86342,
                "withBase" : true
            }
        ]
    },
    "likes" : 0,
    "rating" : 0,
    "rating_count" : 0,
    "release_date" : "1955-11-11"
}

我想从 casts.crew 中的数组元素中删除 withBase 字段 ..

我试过了

db.coll.update({_id:235399},{$unset: {  "casts.crew.withBase" : 1 } },false,true)

什么都没有改变。

并尝试了这个..

db.coll.update({_id:235399},{$unset: {  "casts.crew" : { $elemMatch: { "withBase": 1 } } } },false,true)

它从文档中删除了整个船员数组。

有人可以向我提供正确的查询吗?

最佳答案

您可以使用新的 positional identifier在 3.6 中更新数组中的多个元素。

类似

 db.coll.update( {_id:235399}, {$unset: {"casts.crew.$[].withBase":""}} )

$[]crews 数组中删除所有 withBase 属性。它充当一个占位符,用于更新数组中的所有元素。

使用 multi true 来影响多个文档。

关于arrays - 从 mongodb 数组中的所有元素中删除一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19945924/

相关文章:

java - 基于公共(public)类变量对 2 个类数组进行排序

java - Java中如何用特定数字填充空数组?

javascript - 按对象数组分组的动态解决方案

mongodb - 如何在 mongo shell 中运行本地脚本 - 解决方案 load()

javascript - mongo $where 返回所有内容

javascript - 复合索引覆盖以前的文档

python - 将字典转换为 numpy 多维数组

arrays - 比较 2 个数组并列出差异 - Swift

javascript - 观察对嵌套数组的更改不会返回添加/更改的元素

javascript - Node.js 如何将 geojson 从 mongodb 传递到我可以在前端使用的对象