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

  • 相关阅读:
    (转) tcp的注册端口
    [转] Android中C&C++源码库的初步研究
    (转)vim7.3中文乱码解决方法
    {转} Eclipse 高亮显示选中的相同变量
    libcurl 一个实现了client请求http,ftp的库
    c#操作文件夹
    OutputCache祥解
    非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用
    IXMLDOMDocument 成員
    关于中日文和UNICODE之间编码的转换(2008725 15:05:00)
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/10003494.html
Copyright © 2011-2022 走看看