findAndUpdate对象数组会覆盖整个subscehama

时间:2017-10-22 09:18:33

标签: node.js mongodb mongoose

我搜索了所有stackoverflow,但没有找到解决我问题的任何东西。

这是我的猫鼬用户架构:

name: String,
movies: [new Schema({
  state: String,
  rate: String,
  note: String
})]

例如,我想在此处使用notetest更新为_id: 20。但我不想发送包含所有ratestatenote值的整个电影对象。

name: Mehdi,
movies: [
  {
    _id: 10,
    note: 'This is awesome',
    rate: 10
  },
  {
    _id: 20,
    rate: 7
  }
]

这是我目前的代码:
它会覆盖整个电影对象。

User.findOneAndUpdate({
  _id: user._id,
  'movies._id': 20
}, {
  $set: {
    'movies.$': movie
  }
}, {
  new: true
})

我应该find然后使用普通JS然后.save()来做它吗?

这不是MongoDB - Update objects in a document's array (nested updating)的确切问题。因为我不想发送整个对象。我可能只想发送

_id: 10,
state: 'watched'

P.S。
我找到了this插件,但它没有针对数组中特定对象的解决方法。

0 个答案:

没有答案