Arrays 如何在Mongo中从数组数组中提取元素

Arrays 如何在Mongo中从数组数组中提取元素,arrays,mongodb,mongoose,Arrays,Mongodb,Mongoose,我正在努力寻找通过Mongoose从Mongo中的数组数组中删除元素(具有_id)的查询格式。我已经阅读并搜索过了,但无法获得正确的查询格式 我知道:MySchema中文档的_id,outerArray中数组元素的_id,以及innerray中数组元素的_id 有人能指出我做错了什么吗?谢谢大家! Mongo模式: MySchema { outerArray: [ { field1 : String, innerArray [ {

我正在努力寻找通过Mongoose从Mongo中的数组数组中删除元素(具有_id)的查询格式。我已经阅读并搜索过了,但无法获得正确的查询格式

我知道:MySchema中文档的_id,outerArray中数组元素的_id,以及innerray中数组元素的_id

有人能指出我做错了什么吗?谢谢大家!

Mongo模式:

MySchema {
    outerArray: [ {

        field1 : String,

        innerArray [ {

            field2: String

        } ]
    } ]
}
Mongoose查询-这不起作用:

MySchema.findByIdAndUpdate( 
        mongoose.Types.ObjectId(docId),
        { 
            $pull: {
                'outerArray': {
                    $elemMatch: {
                        '_id': mongoose.Types.ObjectId(outerArrayDocId),
                        'innerArray': {
                            '_id': mongoose.Types.ObjectId(innerArrayDocId)
                        }
                    }
                }
            }
        },
        (err : mongoose.Error, updated : any) => {
});

您可以使用以下查询来解决问题:

MySchema.findOneAndUpdate( 
    {_id: docId, 'outerArray._id': outerArrayDocId},
    { 
        $pull: {
            'outerArray.$.innerArray': {
                _id: innerArrayDocId
            }
        }
    },
    (err : mongoose.Error, updated : any) => {
});