mongodb - 如何使用 mongodb 更新包含在父对象数组中的对象的属性?

我使用 MongoDB 作为我的数据库。我有一个数据:

 {
   _id : '123'
   friends: [
     {name: 'allen', emails: [{email: '11111', using: 'true'}]}
   ]
 }

现在,我想修改用户的 friend 的电子邮件'电子邮件,其_id是'123' 我是这样写的:

db.users.update ({_id: '123'}, {$set: {"friends.0.emails.$.email" : '2222'} })

这很简单,但是,当 emails 数组有两个或更多数据时,这是错误的。 所以,我的问题是: 如何修改嵌套字段中的数据——只有两个或更多嵌套数组?谢谢。

最佳答案

您需要使用 Dot Notation对于数组。

也就是说,您应该将 $ 替换为您尝试更新的元素的从零开始的索引。

例如:

db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.0.email" : '2222'} });

将更新第一个 friend 的第一封电子邮件,并且

db.users.update ({_id: '123'}, { '$set': {"friends.0.emails.1.email" : '2222'} })

将更新第一个 friend 的第二封电子邮件。

https://stackoverflow.com/questions/19603542/

相关文章:

mongodb - 如何修复我的mongodb?

node.js - Redis 缓存和 Mongo 的持久性架构

mongodb - 选择 MongoDb/CouchDb/RavenDb - 性能和可扩展性建议

mongodb - 在 MongoDB 中存储 null 与根本不存储 key

java - 为什么 Casbah/Java MongoDB 驱动程序会出现 java.lang.I

mongodb - 在 MongoDb 中按 15 分钟的时间间隔对结果进行分组

javascript - Meteor 文档中的消息计数示例如何工作?

mongodb - 如何对 MongoDB 集合中所有文档的键值求和

c# - 如何通过 .NET 在 MongoDB 中创建索引

mongodb - EventStore 与 MongoDb