猫鼬:向嵌套对象添加属性

时间:2018-07-15 02:41:30

标签: javascript node.js mongoose mongoose-schema

我当前正在使用AngularJS,后端正在使用NodeJS和Express。我使用猫鼬访问数据库。我试图弄清楚如何向嵌套对象添加属性,但我终生无法找到如何在网络上的任何地方进行操作。

我的模式如下:

{
id: {
    type: String
},
involved: {
    type: String
},
lastMsgRead: Object

}

lastMsgRead将看起来像这样:

{
    user1: "somestringblahblah",
    user2: "someotherstring",
}

,依此类推。 我的问题是,如何用Mongoose更新lastMsgRead以向其中添加另一个属性,例如添加user3,这样现在看起来像:

{
    user1: "somestringblahblah",
    user2: "someotherstring",
    user3: "anotherstring"
}

整个文档在更新后会这样:

{
    id: "string",
    involved: "string",
    lastMsgRead: {
        user1: "somestringblahblah",
        user2: "someotherstring",
        user3: "anotherstring"
    }

}

编辑: 添加属性后,将来如何更新?

2 个答案:

答案 0 :(得分:1)

您可以使用.dot表示法在嵌套对象中进行更新

db.collection.update(
  { },
  { "$set": { "lastMsgRead.user3": "anotherstring" } }
)

答案 1 :(得分:0)

在猫鼬5.1.0及更高版本中,您可以使用MongooseMap处理此问题。 您可以按如下所示在架构中对其进行定义:

var baslikcek

然后您可以通过{ id: { type: String }, involved: { type: String }, lastMsgRead: { type: Map, of: String } }

添加新值
.set(key, value)

并通过myDoc.lastMsgRead.set(key, value)

获取值
.get(key)