如何通过ID找到并删除数组中的Mongoose子文档?

时间:2015-07-13 22:04:58

标签: node.js mongodb mongoose

我有以下mongoose架构:

{
    name: String,
    subArray: [
        {
            subName: String,
            subNumber: Number
        }
    ]
}

我已经在subArray中添加了对象,这些对象会自动分配"_id"。在Node.js中,如何在subArray中通过"_id"找到一个对象并将其删除?

2 个答案:

答案 0 :(得分:7)

您可以与$pull运营商一起进行猫鼬findOneAndUpdate。所以像下面这样的东西可以工作(未经测试):

Model.findOneAndUpdate( {'subArray._id' : '55a19992474e7ded6b4ae2b0'} ,
  {
    $pull: { subArray: { _id: '55a19992474e7ded6b4ae2b0' }}
  }
  {new: true},
  function(err, doc){
     console.log(err,doc)
})

答案 1 :(得分:0)

上述代码段的小修正

ProductContact.findOneAndUpdate({'productRoles._id':req.params.product_role_id}, 
{
  $pull: { productRoles: {_id:req.params.product_role_id }}
},{new:true}, 
function(err, productcontact) {
  if(err)
    res.send(err);res.json({message: 'Role successfully deleted.'});
})