Node.js 从mongoose中的数组中按id删除对象
所以这看起来很简单,但我似乎无法让它工作。我在mongodb中有一个文档,我正在使用mongoose。我需要做的就是按id查找用户,获取文档并从对象数组中删除一个指定的对象。结构如下:Node.js 从mongoose中的数组中按id删除对象,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,所以这看起来很简单,但我似乎无法让它工作。我在mongodb中有一个文档,我正在使用mongoose。我需要做的就是按id查找用户,获取文档并从对象数组中删除一个指定的对象。结构如下: report:[ { asset_report_id:234, name:'somethign, }, { asset_report_id:23, name:'somethign, }, { asset_report_id:11
report:[
{
asset_report_id:234,
name:'somethign,
},
{
asset_report_id:23,
name:'somethign,
},
{
asset_report_id:111,
name:'somethign,
}
]
我试过这个:
User.findOne({_id: request.decodedTokenData.userId})
.exec()
.then(user=>{
const result = user.reports.find( ({ asset_report_id }) => asset_report_id === assetID );
console.log('IN FIND',result);
})
.catch(err=>console.log(err))
现在我确实得到了很好的结果,我可以删除,但是没有一种方法可以直接使用mongoose吗?更多关于纯mongo版本的行:
db.removeObject.update( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
{$pull:{"reports":{"asset_report_id":234}}},false,true);
因此,正确的解决方案是:
await User.updateOne( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
{$pull:{"report":{"asset_report_id":234}}},false,true)
由于数据模型包含“report”数组您可以尝试:
{$pull:{“report”:{“asset\u report\u id:234}}}
?像这样User.update({code id:request.decodedtokenada.userId},{$pull:{“reports”:{“asset\u report\u id:234}}})代码>如果语法错误,请更正我的Thanksys,但是更改reports->report,因为示例数据的数组不会以“s”结尾。谢谢!虽然它应该使用updateOne
update不推荐使用:)您也可以在下面回答这个问题,因为您帮助了我,所以我会接受它。