我当前正在使用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"
}
}
编辑: 添加属性后,将来如何更新?
答案 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)