Как удалить элемент массива из субдокумента

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

{
    "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 ответ


Ты пытался:

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

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


Есть идеи?

10000