如何从子子文档中删除数组元素

时间:2019-05-14 21:00:47

标签: mongoose

我的文档的布局如下:

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

我想使用其ID从A1.B1.C1中删除其中一个数组元素。

我正在使用以下更新代码:

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

但这会导致以下结果:

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

我尝试了更新代码的不同变体,例如:

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

但这会导致以下错误:

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

有人可以提供一些有关如何从子子文档中删除特定数组元素的指导吗?

1 个答案:

答案 0 :(得分:1)

您尝试过吗:

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

应该工作。