精华内容
下载资源
问答
  • mongodb修改字段数据类型

    千次阅读 2018-09-05 21:39:20
    今天遇到一个很尴尬的应用场景,因为新架构之前,我们mongodb的yfy_score_record表中DATE_TIME字段的类型是string类型,后来上了新架构之后DATE_TIME字段变成DateTime类型了,然后统计某一个月内数据的时候就出现...

    今天遇到一个很尴尬的应用场景,因为新架构之前,我们mongodb的yfy_score_record表中DATE_TIME字段的类型是string类型,后来上了新架构之后DATE_TIME字段变成DateTime类型了,然后统计某一个月内数据的时候就出现问题了,因为string类型的数据查询方式和DateTime类型查询方式是完全不一样的两种查询。基于这种情况,我们只能将线上的数据类型进行修改了,将string类型的数据全部修改为DateTime类型。

    技术选型:

    解决这种情况有两种方法,一种是通过Java来将数据修改过来,二是通过mongodb自己的脚本来修改。我们来分析一下这两种方法的优缺点:

    Java方式:代码侵入式强,需要写业务之外的代码,会留下一堆无用的信息,但是采用Java的方式可控性会比较高、自由性强。

    脚本方式:对代码0侵入,不需在应用中写任何代码,不会留下任何信息,但是可控性不高,对mongodb脚本能力要求比较高。

    解决方法:

    对比上面的两种方法,最后我们决定采用脚本的方式数据类型修改,因为这种方式时间周期最短,代码量最少,也不需要修改应用代码。我们只需要在mongodb命令界面输入下面的脚本命令就可以了,代码如下所示:

    db.yfy_score_record.find({DATE_TIME:{$type:"string"}}).forEach(function(doc) {

    doc.DATE_TIME=new Date(doc.DATE_TIME);

    db.yfy_score_record.save(doc);

    })

    脚本介绍:

    • yfy_score_record是表名称
    • {DATE_TIME:{$type:"string"}}表示DATE_TIME字段必须是string类型
    • doc.DATE_TIME=new Date(doc.DATE_TIME);修改DATE_TIME字段类型,变为Date类型
    • db.yfy_score_record.save(doc);保存修改后的字段信息

    具体步骤:

    我这边使用的是NoSQL Manager for MongoDB工具进行MongoDB数据管理的,新架构之前的数据如下所示:

    新架构之后的数据:

    在yfy_score_record右键打来Shell脚本,然后输入我们的脚本命令,如下所示:

    总结:

    脚本其实很简单,最主要是对线上的数据进行修改都有一定的风险,所以在修改数据之前一定要先进行备份,但是在脚本运行期间新产生的数据就会丢失。未来保证脚本的可靠性,我们一定要在测试环境多测试几次,然后再到生产运行。好了今天的内容就介绍到这边了,谢谢大家的阅读~

    要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~

                                                           

    展开全文
  • MongoDb 修改 文档字段数据类型 一、MongoDB数据类型总览----All 常用 Type Number  Type Explanation 1 Double 浮点型 2 String UTF-8字符串都可表示为字符串类型的数据 3 Object 对象,...

    MongoDb 修改 文档字段数据类型

    一、MongoDB数据类型总览----All

    常用

    Type Number  Type Explanation
    1 Double 浮点型
    2 String UTF-8字符串都可表示为字符串类型的数据
    3 Object 对象,嵌套另外的文档
    4 Array 值的集合或者列表可以表示成数组
    5 Binary data 二进制
    7 Object id 对象id是文档的12字节的唯一 ID   系统默认会自动生成
    8 Boolean 布尔类型有两个值TRUE和FALSE
    9 Date 日期类型存储的是从标准纪元开始的毫秒数。不存储时区
    10 Null 用于表示空值或者不存在的字段

     

                                       

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    其他类型

    Type Number  Type Explanation
    11 Regular expression

    采用js 的正则表达式语法

    13 JavaScript code 可以存放Javasript 代码
    14 Symbol 符号
    15 JavaScript code with scope  
    16 32-bit integer 32位整数类型
    17 Timestamp 特殊语义的时间戳数据类型
    18 64-bit integer 64位整数类型

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    二、修改字段数据类型语法

    db.文档.find({"列":{$type:Type Number}}).forEach(
             function(x){
                 x.列=new NumberLong(x.列);
                 db.文档.save(x);
             }
    );
    


    三、语法实例

     

    db.membertest.find({"nameId":{$type:2}}).forEach(
         function(x){
                x.nameId = new NumberLong(x.nameId); //将nameId转为NumberLong 类型
                db.membertest.save(x); //保存nameId类型
         }
    );
    

     

    其中类型还包含:

    NumberInt :Int类型

    NumberLong :long类型

    说明:将membertest 文档的 nameId 由原来的 String 转为 NumberLong 类型。

    展开全文
  • MongoDB 修改字段

    2020-03-14 09:38:42
    db.getCollection('集合名').update({}, {$rename : {"修改字段名" : "修改字段名"}}, {multi:true}) {multi:true} 表示 对该集合的所有数据生效 因为mongodb 没有表结构这个概念 一个集合内的数据之间结构...

     

     

    db.getCollection('集合名').update({}, {$rename : {"修改前字段名" : "修改后字段名"}}, {multi:true})

     

     

     {multi:true} 表示 对该集合的所有数据生效  因为mongodb 没有表结构这个概念 一个集合内的数据之间结构相互独立 不统一

    展开全文
  • Python操作MongoDB——设置或修改字段数据类型

    1. 第三方包

    from pymongo import MongoClient
    import bson
    from dateutil import parser

    2. 插入数据并设置数据类型

    from pymongo import MongoClient
    import bson
    from dateutil import parser
    from datetime import datetime      # 为了获取当前时间
    
    '''连接数据库'''
    connect = MongoClient(host="IP", port=端口号)
    '''获取数据库实例'''
    editor = connect["editor"]
    # 或者
    editor = connect.editor
    '''获取 student 集合'''
    student = editor["student"]
    # 或者
    student = editor.student
    '''定义一条数据为字典类型'''
    stu = {'id': bson.int64.Int64('20180901'),
    	   'name': 'Jone', 
           'age': 22, 
           'gender': 'male',
           "add_time": parser.parse(datetime.now())}
    '''插入数据'''
    student.insert_one(stu)
    
    

    3. 修改已插入数据的类型

    '''查找需要修改的数据'''
    result = student.find({"id":{"$gte":20180901,"$lt":20180905}},
                             no_cursor_timeout=True, batch_size=10)
    
    for a in result:
        student.update_one(a, {"$set": {"id": bson.int64.Int64(a["id"])}})
    
    展开全文
  • 具体方法如下:(推荐教程:MongoDB教程)修改字段名称,把synonymsList表的name_status修改为statusdb.getCollection('synonymsList').update({},{$rename:{"name_status":"status"}},false,true)把 from这个数组有...
  • MongoDB中,db.collection.ipdate()和db.collection.save()方法都可以修改集合中已存在的文档。db.collection.update()方法对修改提供额外的控制。例如,db.collectoin.update()修改已存在数据或一组匹配查询条件...
  • # 批量修改字段值db.getCollection('collectiona').find().forEach(function(item){db.getCollection('collectiona').update({"_id":item._id},{$set:{"outTradeNo1": 'wzf'+item.title}})})# 批量修改字段:从另外...
  • 背景: 某次开发中需要修改字段名称,由于时间紧,而自己对mongodb不熟,按照基本逻辑写完了代码并实现了功能,事后学习官方文档有更好的方法。数据准备ret = test_coll.insert_many([ { "_id": 1, "alias": [...
  • MongoDB可以通过设置字段TTL(Time To Live )索引来设置过期时间 1、如下所示,test是Collection,设置Date1的过期时间10秒,只要在插入的数据中包含Date1字段,插入数据后10秒之后会自动删除该条数据 //创建...
  • 关键是pom.xml要加入:pom.xml在application.properties中加入:spring.data.mongodb.uri=mongodb://用户名:密码@IP:PORT/数据库实体类实体类省略get、set其他都不解释了,一看就懂,这里要注意id这个字段。...
  • Mongodb中NumberLong类型转String类型方法 原创 2016年12月12日 19:14:26 ...将Mongodb中Numberlong...本文介绍将.CSV文件数据导入到Mongodb数据库后,Numberlong类型数据如何转换为String类型数据。 电脑配
  • 基本文档更新MongoDB提供了update()命令来更新集合的文档。仅仅更新要更新的文档,可以将条件添加到更新语句,以便更新选定的文档。...使用set命令修改字段名称;选择要修改的字段名称,并相应地输入新值。db.Em...
  • MongoDB字段设置默认值null或者其他

    千次阅读 2020-02-23 10:45:30
    效果如图所示: 这个是面向字段的 ...代码中的collect修改为自己的集合 , fileName修改为自己的字段名 注意:无法影响后续新增的数据 如果有其他办法还请赐教 暂时只找到这个方法凑合着用 ...
  • 很好的一点就是,数据库不需要先建立,在连接后,如果进行插入数据操作,系统可以自己创建,我们假设一个post集合,里面是一些博客文章组成的文档。下面先插入几篇文章做实验。 1 >>> import ...
  • mongdb查询数据库数据,进行数据转换时,获取数据class类型时,如果...修改:把报错的列数据类型统一就可以了。。。 java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.get(Concurre...
  • MongoDB数据修改总结

    千次阅读 2013-11-29 21:24:16
    1.前言 MongoDB是NoSQL数据库中的一种,属于文档数据库,它与关系型数据库的对比见下表: ...MongoDB和关系型数据库对比...表的一行数据 文档document 一条记录record 表字段 键key 字段field 字段
  • mongodb 修改添加内嵌数组数据指令

    千次阅读 2018-10-24 17:38:32
    mongobd复合查询修改内嵌数组指令 初始数据 下面是一个collection,名称为 care_field 中的一条数据,集合包含多条数据。其中 baseFieldList 字段为数组复合属性。 { "_class" : &...
  • operator_log为集合名,operation_type为字段名 {$type:2}代表type是2的,即字符串,查询所有字符串的forEach,并复制,保存 db.operator_log.find({"operation_type":{$type:2}}).forEach(function(x) { x....
  • 一、问题描述:需要将工作界面上的一些已经离职的用户状态改为失效,并备注为离职二、需要准备/拿到手的工具/条件/数据:1.已离职人员名单(excel格式)2.任意mongodb工具(笔者使用的是NoSQLBooster for Mongodb)3.连接...
  • 后面决定要进行一次大重构,增加一个dao层,后台的mvc架构,以前觉得dao和service的很多工作重复,经过这个以后,才发现dao层确实很有必要,不过service和dao层的数据交换格式千万不要用mongo驱动自带的,mongo2.x...
  • mongodb数据修改

    2019-09-28 19:21:43
    默认情况下,mongo的修改只会修改找出来的第一条数据,如果要修改查询匹配的所有记录,必须使用multi那个参数。 修改的操作符说明: $inc 以给定的值增长某个字段; $set 替换给定的键值; $push 如果字段是一...
  • 一、问题描述:  需要将工作界面上的一些已经离职的用户状态改为失效,并备注为离职 二、需要准备/拿到手的工具/条件/数据:  1.已离职人员名单(excel格式) ...修改mongodb中列表中多个元素,遍历其中的元素...
  • 在我们使用MongoDB的过程中,经常会出现修改数据的情况。我们一般使用 update_one或者 update_many这两个方法。例如有一个集合里面的字段为:name, age, salary, address我要把所有address为北京的记录对应的salary...
  • 1.根据bqyId分组并统计数量,$group只会返回参与分组的字段,使用$addToSet在返回结果数组中增加_id字段 2.使用$match匹配数量大于1的数据 3.doc.uniqueIds.shift();表示从数组第一个值开始删除;作用是踢除重复数据...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 227
精华内容 90
关键字:

mongodb修改字段数据