Как я могу найти и удалить в Mongodb, когда ключ имеет несколько значений? - PullRequest
0 голосов
/ 17 января 2019

Это мои данные JSON:

[
{ _id: "1", name: "a", detail: "aaa", file: [{ filename: "abc.jpg", size: "1.mb" }]}, 
{ _id: "2", name: "a", detail: "aaa", file: [{ filename: "def.jpg", size: "1.mb" }]},
{ _id: "3", name: "a", detail: "aaa", file: [{ filename: "ghd.jpg", size: "1.mb" }]}
]

Я пытался удалить вот так:

db.getCollection ('Album'). Update ({'name': "a"}, { $ pull: {'file': {'filename': "def.jpg"}}})

но это не работает, как правильно это сделать

1 Ответ

0 голосов
/ 17 января 2019

Вот что я сделал и получил хорошие результаты:

db.getCollection('Album')
  .update({ 'name': "a" }, { $pull: { 'file': { 'filename': "def.jpg" } } 
  }, { multi: true })

до того, как база данных будет выглядеть так:

/* 1 */
{
    "_id" : "1",
    "name" : "a",
    "detail" : "aaa",
    "file" : [ 
        {
            "filename" : "abc.jpg",
            "size" : "1.mb"
        }
    ]
}

/* 2 */
{
    "_id" : "2",
    "name" : "a",
    "detail" : "aaa",
    "file" : [ 
        {
            "filename" : "def.jpg",
            "size" : "1.mb"
        }
    ]
}

/* 3 */
{
    "_id" : "3",
    "name" : "a",
    "detail" : "aaa",
    "file" : [ 
        {
            "filename" : "ghd.jpg",
            "size" : "1.mb"
        }
    ]
}

и после:

/* 1 */
{
    "_id" : "1",
    "name" : "a",
    "detail" : "aaa",
    "file" : [ 
        {
            "filename" : "abc.jpg",
            "size" : "1.mb"
        }
    ]
}

/* 2 */
{
    "_id" : "2",
    "name" : "a",
    "detail" : "aaa",
    "file" : []
}

/* 3 */
{
    "_id" : "3",
    "name" : "a",
    "detail" : "aaa",
    "file" : [ 
        {
            "filename" : "ghd.jpg",
            "size" : "1.mb"
        }
    ]
}

Iпросто следовал этому: https://docs.mongodb.com/manual/reference/operator/update/pull/

И я не знаю, почему ваш код не работает и в моей базе данных.

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