【问题标题】:Remove a subdocument nested in an array in MongoDB删除嵌套在 MongoDB 数组中的子文档
【发布时间】:2014-03-30 16:38:29
【问题描述】:

我想删除这个:

{
"val" : NumberLong(200),
"chId" : 2,
"reqSys" : "222220005031",
"old" : NumberLong(223),
"isRb" : false
},

从此:

{
"_id" : ObjectId("52d7c25480f0a83293adbbbc"),
"d" : 2014001,
"m" : 123456789,
"topups" : {
    "data" : [
            {
                    "val" : NumberLong(200),
                    "chId" : 2,
                    "reqSys" : "222220005031",
                    "old" : NumberLong(223),
                    "isRb" : false
            },
            {
                    "val" : NumberLong(150),
                    "chId" : 2,
                    "reqSys" : "222220005031",
                    "old" : NumberLong(166),
                    "isRb" : false
            }
    ],
    "total" : {
            "cnt" : 2,
            "revenue" : NumberLong(3500000)
    }
}

我想通过查询{d:2014001, m:123456789} 来查找对象,并在一个命令中删除数据数组中具有“val”:200 的整个对象。但如果没有,多个命令也适用于我。已尝试使用 $pull 和 $pullAll 但我遗漏了一些东西。

【问题讨论】:

标签: mongodb


【解决方案1】:

要删除子文档,请使用$pull

此查询将从嵌套的子文档中删除

 db.collection.update({ d : 2014001 , m :123456789},
                      {$pull : { "topups.data" : {"val":NumberLong(200)} } } )

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多