【问题标题】:MongoDB - $pull (remove an array element) from a nested documentMongoDB - 从嵌套文档中 $pull(删除数组元素)
【发布时间】:2019-06-19 15:21:26
【问题描述】:

我需要从嵌套文档中删除一个数组项,但 $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"}}})

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 2021-02-26
    • 2019-01-13
    • 2017-08-19
    • 2022-07-19
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多