如何更新猫鼬模式中另一个数组内的数组中的对象?

时间:2020-04-19 14:57:37

标签: arrays mongodb mongoose mongoose-schema

在这里发现了很多类似这样的问题,但没有找到答案。

问题

假设我具有以下猫鼬模式:

const mySchema = new mongoose.Schema({
  sanePeoplesField: String,
  comments: [
    normalStuff: {type: Date, default: Date.now},
    damNestedAgain: [String]
  ]
})

回顾一下,damNested array在架构上的comments array内部。

如果我很幸运,想更改normalStuff(数组内的obj),我可以这样做:

mySchema.findOneAndUpdate({"comments._id": req.body.commentId},
{
    $push:
    {
      comments: { normalStuff: 12122020 } }
    }
})

这将使用新值更新normalStuff。

但是,我需要更新damNestedAgain中的一个字段,但不知道如何到达该字段!

问题

在我的示例中,如何更新嵌套数组damNestedAgain的嵌套数组?

1 个答案:

答案 0 :(得分:0)

mySchema.findOneAndUpdate({"comments._id": req.body.commentId},
{
    $push:
    {
      "comments.$.damNestedAgain": req.body.commentId
    }
})

已经成功了,谢谢。