MongoDb - 如何使用 $set 更新嵌套对象的多个元素?

发布于 2024-12-07 06:16:33 字数 524 浏览 1 评论 0原文

假设我有以下文档:

{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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

み青杉依旧 2024-12-14 06:16:33

您可以使用以下命令进行更新:

db.myCollection.update({
    name: 'mydoc'
}, {
    $set: {
        'nestedDoc.b': 20,
        'nestedDoc.c': 30,
        'nestedDoc.d': 40
    }
})

以下是有关更新命令的更多信息:

You can update by using the following:

db.myCollection.update({
    name: 'mydoc'
}, {
    $set: {
        'nestedDoc.b': 20,
        'nestedDoc.c': 30,
        'nestedDoc.d': 40
    }
})

Here is more information about update command:

玻璃人 2024-12-14 06:16:33

更新:这个答案不是正确的更新!

这在我的应用程序中也有效,并且易于阅读

db.myCollection.update({
    name: 'mydoc'
   }, 
   {
    $set: {
        nestedDoc:{
           b: 20,
           c: 30,
           d: 40,
       } 
    }
})

update: this answer is not a correct update!

this works too in my app, and easy to read

db.myCollection.update({
    name: 'mydoc'
   }, 
   {
    $set: {
        nestedDoc:{
           b: 20,
           c: 30,
           d: 40,
       } 
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文