从FindOneAndUpdate中的数组中删除值

时间:2019-06-17 19:22:21

标签: node.js express mongoose

我愿意用猫鼬在标题内执行动作

例如文档字段(数组)如下

likers: ['Jakob', 'Ritchie','John', 'Tommy']

我想从使用此参数找到的数组中删除“喜欢”

let document = await Model.findOne({id: req.params.id, name: req.params.name})

let unlike = await Model.findOneAndUpdate({id: req.params.id, name:  req.params.name},
/* do something like this document.likers.splice() or something  */)  

我该怎么做?

1 个答案:

答案 0 :(得分:2)

只要正确定义了架构,就可以通过update$pull来做到这一点,就像这样:

YouModel.updateOne(
   { _id: mongoose.Types.ObjectId(req.params.id) }, 
   { $pull: { 'likers': req.params.name } }
)

与纯mongo几乎相同:

db.getCollection('YourColletion').updateOne(
  { _id: ObjectId(req.params.id) }, 
  { $pull: { 'likers': req.params.name } }
)