美文网首页
MongoDB 集合字段名修改 $rename

MongoDB 集合字段名修改 $rename

作者: 沧海2122537190 | 来源:发表于2019-09-30 16:42 被阅读0次

$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});
修改前
报错语句

相关文章

网友评论

      本文标题:MongoDB 集合字段名修改 $rename

      本文链接:https://www.haomeiwen.com/subject/nmzldctx.html