【问题标题】:Mongoose $push replacing whole array with a new array of one elementMongoose $push 用一个元素的新数组替换整个数组
【发布时间】:2018-12-21 03:11:26
【问题描述】:

根据标题,我有一个属性books 定义为

books: [{
  ref: 'Book',
  type: Schema.Types.ObjectId,
}]

我正在尝试更新它

await MyModel.updateOne({ id: myId }, { $push: { books: book._id } })

但是每次调用上述更新时,整个数组都会被替换为一个元素的数组(“元素”是最后推送的元素)。因此我最终得到了类似的东西

"books": [
    {
        "$oid": "5b47aa8ae2d927da983733cb"
    }
]

总是只有一个元素。

这发生在运行

  • 节点 8.10
  • 猫鼬 5.14

我做错了什么?

【问题讨论】:

  • 请尝试更新一次MyModel.update({ id: myId }, { $push: { books: book._id } }) 如果不起作用,请发布您的完整代码
  • 成功了,谢谢!有什么具体原因吗?将您的评论移至回答,我会将其标记为已解决。再次感谢。
  • 不知道!!!我从未使用过updateOne,但确实使用过update,这就是我建议你的原因...

标签: arrays mongodb mongoose updates mongoose-schema


【解决方案1】:

你可以试试更新

MyModel.update({ id: myId }, { $push: { books: book._id } })

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2019-12-20
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多