zoukankan      html  css  js  c++  java
  • mongo之$rename更新一个字段的名称(可批量)

    $rename操作逻辑执行$unset 老名称和新的名称,然后执行 $set新名称运行。因此,操作可能不保留文档中字段的顺序; 即重命名的字段可以在文档内移动。

    1、重命名字段:一级字段

    格式:

    db.students.updateMany( {}, { $rename: { "nmae": "name" } } )

    eg:

    #原集合
    {
      "_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" }
    }
    
    #修改:批量把所有的nmae 字段改成name,也可以在第一个花括号里面指定修改哪一个id记录的nmae
    db.students.updateMany( {}, { $rename: { "nmae": "name" } } )
    
    #输出:
    {
      "_id": 1,
      "alias": [ "The American Cincinnatus", "The American Fabius" ],
      "mobile": "555-555-5555",
      "name": { "first" : "george", "last" : "washington" }
    }
    
    {
       "_id" : 2,
       "alias" : [ "My dearest friend" ],
       "mobile" : "222-222-2222",
       "name" : { "first" : "abigail", "last" : "adams" }
    }
    
    { "_id" : 3,
      "alias" : [ "Amazing grace" ],
      "mobile" : "111-111-1111",
      "name" : { "first" : "grace", "last" : "hopper" } }

    2、重命名嵌入文档中的字段

    eg:

    #元集合:
    {
      "_id": 1,
      "alias": [ "The American Cincinnatus", "The American Fabius" ],
      "mobile": "555-555-5555",
      "name": { "first" : "george", "last" : "washington" }
    }
    
    {
       "_id" : 2,
       "alias" : [ "My dearest friend" ],
       "mobile" : "222-222-2222",
       "name" : { "first" : "abigail", "last" : "adams" }
    }
    
    { "_id" : 3,
      "alias" : [ "Amazing grace" ],
      "mobile" : "111-111-1111",
      "name" : { "first" : "grace", "last" : "hopper" } }
    #修改
    db.students.update( { _id: 1 }, { $rename: { "name.first": "name.fname" } } )
    #结果
    
    {
      "_id" : 1,
      "alias" : [ "The American Cincinnatus", "The American Fabius" ],
      "mobile" : "555-555-5555",
      "name" : { "fname" : "george", "last" : "washington" }
    }

    注释:

    ×重命名不存在的字段
    重命名字段并且现有字段名称引用不存在的字段时,$rename操作员不执行任何操作

  • 相关阅读:
    Configuring ISC DHCPv6 Server
    不兼容的签名实现,
    12个Flex常用功能代码
    水平和垂直翻转可视对象
    在as3中只有事件(或该事件的子级)的发送者才能侦听事件
    addChild一个.swf时,该swf的背景色失效,同时如有超出大小的范围,也会显示,造成边距
    1.随机函数,计算机运行的基石
    flex builder3如何设置默认浏览器
    字体轮廓和设备字体
    Flex Develpment中右边的框的linkWithEdit
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10003494.html
Copyright © 2011-2022 走看看