繁体   English   中英

如何使用 node.js 删除 MongoDB 中嵌套对象数组中的 object

[英]How to delete an object in nested array of objects in MongoDB with node js

我仍然是 node express js 和 mongoDB 的初学者。现在,我正在尝试删除嵌套对象数组中的 object。

对象数组:

[{
  _id: new ObjectId("63d89f8823981819cf61816e"),
  iqc: [
    {
      partname: 'jio',
      vendorname: 'jio',
      partcode: '1234',
      grndate: '2023-01-10',
      project: 'jio',
      lotqty: '200',
      failurerate: '15%',
      issuedetails: 'damaged',
      status: 'pending',
      _id: new ObjectId("63d89f8823981819cf61816f")
    },
    {
      partname: 'sky',
      vendorname: 'sky',
      partcode: '5678',
      grndate: '2023-01-04',
      project: 'sky',
      lotqty: '300',
      failurerate: '20%',
      issuedetails: 'damaged',
      status: 'pending',
      _id: new ObjectId("63d89f8823981819cf618170")
    }
  ],
  __v: 0
}]

我想删除 iqc 中的 object,它具有_id: new ObjectId("63d89f8823981819cf618170")

所以我尝试在 node.js 中删除此代码。它没有工作。它抛出错误 data.iqc.findByIdandDelete 不是 function

app.delete('/delete/:id/:secondid', async (req, res) => {
    const data = await IQC.findById(req.params.id);

if(data )
    {
        await data.iqc.findByIdandDelete(req.params.secondid)
        return res.json("Deleted  Successfully")
    }

});

这里 IQC 是数据库集合,secondid 是我想删除的嵌套 object id 的 id : new ObjectId("63d89f8823981819cf618170")

提前致谢。

您不需要删除但使用$pull进行更新,因为您正在更新数组(删除对象)。

所以你可以尝试这样的事情

yourModel.update({
  "iqc._id": req.params.id
},
{
  "$pull": {
    "iqc": {
      "_id": req.params.id
    }
  }
})

这里的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM