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操作员不执行任何操作

  • 相关阅读:
    青瓷qici
    青瓷qici
    青瓷qici
    青瓷引擎_珍膳小游戏_巧妇有好米来做煮
    2013年12月30日 星期一 谷歌、百度地图拽取
    不懂网络知识,测试工程师真的能走得很远么
    测试和开发之间的博弈--没有硝烟的战争
    docker命令每次需要sudo操作解决方案
    Ubuntu 18.04安装Docker CE + NVIDIA-Docker
    windos10下安装ubuntu18双系统
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10003494.html
Copyright © 2011-2022 走看看