MongoDb - 如何使用 $set 更新嵌套对象的多个元素?
假设我有以下文档:
{name: 'myDoc', nestedDoc: {a: 1, b: 2, c: 3}}
我想与nestedDoc 合并一个新对象:
{b: 20, c:30, d:40}
因此生成的对象将是:
{name: 'myDoc', nestedDoc: {a: 1, b: 20, c: 30, d: 40}}
我如何在单个查询中执行此操作?我觉得我需要多个 $set 调用,但对象属性名称必须是唯一的。换句话说,我希望我可以执行以下操作:
db.myCollection.update({name: 'myDoc', nestedDoc: {$set: {b: 20}, $set: {c: 30}, $set: {d: 40}});
一些额外的细节是 MongoDB 版本是 1.8.2 并且我正在使用 NodeJS 节点本机驱动程序。
Lets say I have the following document:
{name: 'myDoc', nestedDoc: {a: 1, b: 2, c: 3}}
And I would like to merge with the nestedDoc a new object:
{b: 20, c:30, d:40}
So the resulting object would be:
{name: 'myDoc', nestedDoc: {a: 1, b: 20, c: 30, d: 40}}
How can I go about doing this in a single query? I feel like I need multiple $set calls however object property names must be unique. In other words, I wish I could do the following:
db.myCollection.update({name: 'myDoc', nestedDoc: {$set: {b: 20}, $set: {c: 30}, $set: {d: 40}});
Some extra details are that the MongoDB version is 1.8.2 and I am using the NodeJS node-native driver.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用以下命令进行更新:
以下是有关更新命令的更多信息:
You can update by using the following:
Here is more information about update command:
更新:这个答案不是正确的更新!
这在我的应用程序中也有效,并且易于阅读
update: this answer is not a correct update!
this works too in my app, and easy to read