所以这似乎很简单,但是我似乎无法正常工作。我在mongodb中有一个文档,我使用mongoose即时通讯我所要做的就是通过id查找用户,获取文档并从数组中删除一个指定的对象对象。这是结构:
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))
现在我得到的结果很好,可以删除,但是没有直接用猫鼬做的方法吗?普通的mongo版本的更多内容:
db.removeObject.update( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
{$pull:{"reports":{"asset_report_id":234}}},false,true);
答案 0 :(得分:1)
因此正确的解决方案是:
await User.updateOne( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
{$pull:{"report":{"asset_report_id":234}}},false,true)
因为数据模型包含“报告”数组