MongoDB - 从 SubArray 中删除对象

MongoDB - Remove object from SubArray

我正在尝试从子数组中删除一个对象,但没有成功 updateOne() 不是一个函数并且 remove() 不是一个函数。

我想删除 ID 为 '61cae5daf5bfbebd7cf748ef''subcat 1' 对象:

[
 {
     _id: '61cae5daf5bfbebd7cf748ee'
     title: 'category 1',
     SubCats: [
         {
             _id: '61cae5daf5bfbebd7cf748ef'
             name: 'subcat 1',
             image: '/assets/images/vr-box-6203301_1920.jpg',
         },
         {
             _id: '61cae5daf5bfbebd7cf748fb'
             name: 'subcat 2',
             image: '/assets/images/galaxy-s20_highlights_kv_00.jpg',
         },
     ]
 },
]

请帮忙

控制器:

const deleteSubCategory = asyncHandler(async (req, res) => {
 const subCategory = await Category.aggregate([
     { $unwind: "$SubCats" }, 
     { $replaceRoot: { newRoot: '$SubCats'} }, 
     { $match: { _id: ObjectId(req.params.id) }}
 ])

 if (subCategory) {
     await subCategory.updateOne({ $pull: {_id: ObjectId(req.params.id)}})
    res.json({ message: 'sub-category removed' })
 } else {
     res.status(404)
     throw new Error('sub-Category not found')
 }
})

$update$pull

db.collection.update({
  "SubCats._id": "61cae5daf5bfbebd7cf748ef"
},
{
  "$pull": {
    SubCats: {
      _id: "61cae5daf5bfbebd7cf748ef"
    }
  }
},
{
  "multi": true
})

mongoplayground