$rename为update的一个操作符。
基础形式为:
{$rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }
注意:
1、该操作可能不会保留文档中字段的顺序,即通常情况下改名后的字段会出现在文档最后。见例一
2、如果文档中已有一个与新字段重名的字段时,则该操作将用需重命名的字段覆盖掉原有字段,并将重命名前的字段删除。见例三
3、如果文档中需要重命名的字段不存在,则不执行任何操作。见例四
4、如果文档中需要重命名的字段在嵌入式文档中的,则该操作可以重命名这些字段,也可以将字段移入或移出嵌入式文档。见例五
5、如果文档中需要重命名的字段在数组元素中,则该操作无法执行。见例六
示例:
1、修改单个列名
db.getCollection("xjwo_year_dy").updateMany({},{$rename:{"furl":"eg_url"}});
db.getCollection("xjwo_year_dy").update({},{$rename:{"eg_url":"f_url"}},{multi:true});


2、修改多个列名
db.getCollection("a").updateMany({},{$rename:{"article_link":"url","article_sid":"sid"}});
db.getCollection("a").update({},{$rename:{"article_link":"url","article_sid":"sid"}},{multi:true});


3、修改后的字段名在原表中已存在
db.getCollection("a").updateMany({},{$rename:{"article_authors":"article_title"}});
db.getCollection("a").update({},{$rename:{"article_authors":"article_title"}},{multi:true});


4、修改前的字段名在原表中不存在
db.getCollection("a").updateMany({},{$rename:{"article_title1":"title"}});
db.getCollection("a").update({},{$rename:{"article_title1":"title"}},{multi:true});


5、修改嵌入文档内的字段
db.getCollection("a").update({}, {
$rename: {
"a.article_link": "link",//新字段移出数组
"a.article_authors": "b.article_authors",//新字段移入其他数组
"a.article_page_count": "a.page_count"//新字段不移动
}
}, {multi: true});


6、修改数组内的字段
db.getCollection("a").update({}, {
$rename: {"b._id": "id"}
}, {multi: true});


网友评论