Как удалить элемент из двойного вложенного массива в MongoDB - PullRequest
1 голос
/ 11 марта 2020

Я работаю над mon go, в настоящее время необходимо удалить указанный c элемент из массива, вложенного в другой, структура выглядит следующим образом:

{ 
    "_id" : ObjectId("5e616314946b6d3ac4ed8252"), 
    "uid" : "5db069478556622b4a0adca5", 
    "areas" : [
        {
            "name" : "mexico", 
            "elements" : [
                "23452345", 
                "24454675"
            ], 
        }, 
        {
            "name" : "usa", 
            "elemets" : [
                "123123123", 
                "1234334"
            ], 
        }
    ]
}

Итак Мне нужен запрос, который позволяет мне удалить любой элемент в свойстве "elements".

Я пытался с этим запросом, но я не смог его достичь.

db.areas.update(
    { },
    { $pull: 
        { areas: { 
            $elemMatch: { 
                elements: { $eq : "123123123" }
                }
            }
        }
    },
    { multi:false }
);

Это только что сказал

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

1 Ответ

1 голос
/ 12 марта 2020

Вот update для удаления указанного элемента массива c в подмассиве (elements).

Обратите внимание, что для удаления ( pull ) указанного элемента (elements значение "24454675") необходимо указать условие соответствия элемента внешнего массива (обратите внимание, что существует два элемента в поле внешнего массива areas).

db.areas.update(
   { "areas.name": "mexico" },
   { $pull: { "areas.$.elements":  "24454675" } }
)

ПРИМЕЧАНИЕ. Если вы не укажете условие { "areas.name": "mexico" }, весь поддокумент массива areas будет удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...