如何在MongoDB中根据父文档_id更新数组内首个元素的rolename字段
实现方法
你可以直接通过数组下标定位第一个元素,搭配$set更新运算符完成操作,查询条件指定父文档的_id即可。
以下是Mongo Shell环境下的示例代码:
db.yourCollectionName.updateOne( // 查询条件:匹配指定_id的父文档,此处的1替换为你实际的父文档_id值 { _id: 1 }, // 更新逻辑:abc.0 代表abc数组的第一个元素,后面跟上要更新的字段和新值 { $set: { "abc.0.rolname": "替换为你要设置的新角色名" } } )
补充说明:
- 代码中的
yourCollectionName替换为你实际的集合名即可 - MongoDB数组下标从0开始计数,所以
abc.0固定匹配abc数组的第一个元素 - 如果你需要批量修改所有符合条件的父文档,把
updateOne方法替换为updateMany即可 - 注意示例文档中的字段为
rolname,如果你实际的字段名是提问中提到的rolename,修改代码中对应的字段名即可
扩展场景:如果你需要先匹配数组中符合特定条件的元素再更新,比如要更新abc数组里roleid为100的元素的角色名,可以用
$占位符实现,写法如下:db.yourCollectionName.updateOne( { _id: 1, "abc.roleid": 100 }, { $set: { "abc.$.rolname": "新角色名" } } )
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

