首页 > 解决方案 > $pull 没有从嵌套数组结构中提取元素

问题描述

我正在尝试从具有以下结构的对象数组中提取一个元素:

{
    "tasks" : [
        {
            "maintask" : "Walk",
            "subtask" : [
                {
                    "task_name" : "1/2 hour walk",
                    "photo_urls" : [
                        {
                            "photo_url" : "banner1.jpeg",
                        },
                        {
                            "photo_url" : "banner.jpeg",
                        }
                    ]
                }
            ]
        },
    ]
}

我需要根据 photo_url 删除对象。我正在执行以下查询以从 photo_urls 数组中删除 photo_url 对象:

db.booking_checklist.update({}, 
{$pull: {tasks: {subtask: {photo_urls: {$elemMatch: {photo_url: {$regex: ".*banner1.jpeg.*"}}}}}}})

此查询匹配对象但不修改它。以下是查询的响应:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

我也在尝试另一个查询,但该查询正在消失整个任务对象:

db.booking_checklist.update({}, 
{$pull: {tasks: {"subtask.photo_urls": {$elemMatch: {photo_url: {$regex: ".*banner1.jpeg.*"}}}}}})

从过去的几个小时开始,我就陷入了困境。请告诉我应该如何处理这个..

标签: mongodb

解决方案


推荐阅读