wordpress网站语言包,开通微商城要多少钱,网络平台推广方法,wordpress团购学习mongodb#xff0c;体会mongodb的每一个使用细节#xff0c;欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章#xff0c;欢迎浏览本专栏威赞发布的其他文章。
在日常编写程序过程中#xff0c;命名错误是经常出现的错误。拼写错误的单词#xff0c;大小写字…学习mongodb体会mongodb的每一个使用细节欢迎阅读威赞的文章。这是威赞发布的第58篇mongodb技术文章欢迎浏览本专栏威赞发布的其他文章。
在日常编写程序过程中命名错误是经常出现的错误。拼写错误的单词大小写字母的错误等。还有另外一种场景一些字段定义在文档的顶层而随着项目的进展开发人员期望将字段移动到文档的嵌套文档当中。
Mongodb的$rename方法为开发人员提供了字段名称修改的便利。同时该方法也支持嵌套文档字段的移动。
定义
操作符$rename修改字段的名称
语法
{ $rename: {field1: newName1, field2: newName2, ...}}
其中新的字段名称必须与已有字段不同。
在下面的更新语句中将字段名称nickname更新为字段 alias 同时将字段cell更新为mobile
db.students.updateOne({_id: 1}, {$rename: {nickname: alias, cell: mobile}}
)
行为
当在UPDATE中使用$rename操作时Mongodb完成了下面的行为
使用$unset删除带有原来字段名称的字段和新字段名称的字段。执行$set操作将字段值和新字段名称添加到文档中。
使用$rename时对每个文档的操作是原子操作。$rename操作可能不会保留文档中字段排序。支持将字段从嵌套文档中搬入搬出。但不支持文档数组中字段的搬入和搬出。
当文档中存在与新字段名称相同的字段时文档中已有同名字段会被删除。
重命名文档中不存在的字段时使用$rename操作不会对文档进行更新。
mongodb 5.0版本以后向$rename传入空表达式({ })时mongodb不再抛出错误。空表达式不会修改字段值 也不会在oplog中添加新的操作记录。
应用
构建测试集合students并插入数据。能够看到插入集合中字段名称nmae输入错误。
db.students.insertMany([{_id: 1, alias: [The American Cincinnatus, The American Fabius],mobile: 555-555-5555,nmae: { first: george,last: washington}}, {_id: 2, alias: [My dearest friend],mobile: 222-222-2222,nmae: { first: abigail,last: adams}}, {_id: 3, alias: [Amazing grace],mobile: 111-111-1111,nmae: { first: grace,last: hopper}}])
构建数据更新语句修改字段名称。
db.students.updateMany({nmae: {$ne: null}},{$rename: {nmae: name}})
构建另外一个UPDATE语句修改嵌套文档中的名称。
db.students.updateOne({_id: 1},{ $rename: {name.first: name.fname}})
修改一个不存在的字段名称。返回结果中修改文档数量为0
db.students.updateOne({_id: 1}, {$rename: {wife: spouse}})
{acknowledged : true,matchedCount : 1,modifiedCount : 0
}