MongoDB-从嵌套文档中删除$ pull(删除数组元素)

时间:2019-06-19 07:18:46

标签: mongodb

我需要从嵌套文档中删除数组项,并且$ pull无法正常工作。我需要从“ data.tags”数组中删除项目。

这是我的文档

{
    "_id" : "TAGS",
    "data" : {
        "tags" : [ 
            {
                "_id" : ObjectId("5cff889688204e2cc6e219f7"),
                "tag" : "tag1"
            }, 
            {
                "_id" : ObjectId("5d00b888378f6584f25946f2"),
                "tag" : "tag2"
            }, 
            {
                "tag" : "tag3",
                "_id" : ObjectId("5d09cbf607bc04a8fa8dd2a9")
            }, 
            {
                "tag" : "tag2",
                "_id" : ObjectId("5d09cbfb07bc04a8fa8dd2aa")
            }
        ]
    }
}

当我尝试使用pull进行更新时,它不会出错,但不会删除该项目。

我的更新声明

.update({"_id" : "TAGS"}, {"$pull": { "data.tags": {"_id": "5d09cbf607bc04a8fa8dd2a9"}}})

1 个答案:

答案 0 :(得分:1)

您缺少ObjectId构造函数。否则,类型将不匹配,因为您假设"_id"的类型为string

.update({"_id" : "TAGS"}, {"$pull": { "data.tags": {"_id": ObjectId("5d09cbf607bc04a8fa8dd2a9")}}})
                                                             ^^^