$ pull不会从嵌套数组结构中提取元素

时间:2018-10-29 12:45:36

标签: mongodb

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

{
    "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.*"}}}}}})

从过去的几个小时开始,我一直陷于困境。请告诉我该如何处理。.

0 个答案:

没有答案