Как удалить элемент массива из субдокумента - PullRequest
0 голосов
/ 15 мая 2019

У меня есть документ со следующим макетом:

{
    "A1" : {
        "B1" : {
            "C1" : [ 
                ObjectId("123"),
                ObjectId("456")
            ],
            "C2" : [ 
                ObjectId("789"),
                ObjectId("abc")
            ]
        },
        "B2" : {
            "C1" : [ 
                ObjectId("def"),
                ObjectId("hij")
            ],
            "C2" : [ 
                ObjectId("klm"),
                ObjectId("nop")
            ]
        }
    }
}

Я бы хотел удалить один из элементов массива из A1.B1.C1, используя их ID.

Я использую следующий код обновления:

{
    "A1" : {
        "B1" : {
            "$pull" : {
                "C1" : "123"
            }
        }
    }
}

Но это приводит к следующему:

{
    "A1" : {
        "B1" : {}
    }
}

Я пробовал разные варианты кода обновления, например:

{
    "A1" : {
        "B1" : {
            "C1" : {
                "$pull" : "123"
            }
        }
    }
}

Но это приводит к следующей ошибке:

Cast to [ObjectId] failed for value "[{"$pull":"123"}]"

Может ли кто-нибудь дать некоторые рекомендации относительно того, как удалить конкретный элемент массива из вложенного поддокумента?

1 Ответ

1 голос
/ 15 мая 2019

Вы пробовали:

"$pull" : {
   "A1.B1.C1" : mongoose.Types.ObjectId("123")
}

Должно работать.

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