从猫鼬数组中按ID删除对象

时间:2020-05-08 01:19:08

标签: node.js mongodb mongoose

所以这似乎很简单,但是我似乎无法正常工作。我在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);

1 个答案:

答案 0 :(得分:1)

因此正确的解决方案是:

await User.updateOne( {'_id':ObjectId("5c6ea036a0c51185aefbd14f")},
   {$pull:{"report":{"asset_report_id":234}}},false,true)

因为数据模型包含“报告”数组