工具:mongodb:2.1.3(Node.js驱动程序)
目的:
我今天要学习的是如何使用本机Node.js驱动程序在Mongodb 中为嵌套对象添加新属性。
问题 - 要点或不点,这就是问题:
到目前为止,在Mongodb术语中,听起来好像我试图" add to an embedded document"。
在上面链接的示例中,用户希望通过添加新的"字段"来更新occurrences
(即将{12:3}添加到occurrences
)
{
"id" : 1,
"occurrences" : {
"1" : 1,
"2" : 5,
"17" : 1,
"35" : 4
}
}
最流行的答案是做以下事情(我假设" findOneAndUpdate"最近取代了)
db.collection.update(
{_id:ObjectId("1")},
{ $set: { "occurrences.12": "3" }
});
小注 - 为简单起见,我在答案中删除了其他原子更新。
问题:
这种非点解决方案是否可以替代它?或者这样做是错误的,不同的,还是有任何其他潜在的后果?
db.collection.findOneAndUpdate(
{_id:ObjectId("1")},
{ $set: { "occurrences": {"12:3"}}
});
注意:我使用findOneAndUpdate
,因为它似乎是当前的等价物。
答案 0 :(得分:0)
将其视为使用JavaScript对象:
let occurrences = {1: 2, 3: 4, 5: 6};
// add new property
occurrences[12] = 3;
// clobber object
occurrences = {12: 3};
另请注意that you may not want to embed documents at all,具体取决于您希望如何构建数据。有时你可能想要正常化...但有时候你不会。
请注意,您还可以将updateOne
与本机驱动程序一起使用。