语法:

db.集合.find({"列":{$type:2}}).forEach(function(x){

x.列=parseFloat(x.列);db.order.save(x)

})

db.order.find({"saleprice":{$type:2}}).forEach(function(x){x.saleprice=parseFloat(x.saleprice);db.order.save(x)})

( find().里为数据对应的类型,2表示str。也可以不写 )

mongoDB的数据类型

Object  ID :文档的id

String: 字符串,最常用,必须是utf-8

Boolean:布尔值,true 或者false

Integer:整数

Double:浮点数

Arrays:数组或者列表,多个值存储到一个键

Object:用于嵌入文档,即一个值为一个文档

Null:存储null值

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式

Object ID:

  每个文档都有一个属性,为_id保证文档的唯一性;

  可以自己去设置_id插入文档

  如果自己没设置,mongoDB为每个文档提供一个独特的_id ,是一个12字节十六进制数

      前4个字节为当前时间戳

      接下来的3个字节为机器ID

      接下来2个字节为mongo的服务进程ID

      最后3个是简单的增量值

常见的转化

db.getCollection('bond_sentiment_bulletin').find({'pubDate': {$type:2}}).forEach(
function(doc){
db.getCollection('bond_sentiment_bulletin').update({'_id': doc._id},{$set:{'pubDate': new ISODate(doc.pubDate)}})
}
)
or
db.getCollection('bond_sentiment_bulletin').find({'pubDate': {$type:2}}).forEach(
function(doc){
doc.pubDate = new ISODate(doc.pubDate);
db.getCollection('bond_sentiment_bulletin').save(doc);
}
)

更改String类型为Date类型

db.getCollection('bond_sentiment_bulletin').find({"_id" : 416,'pubDate':{$type:9}}).forEach(
function(x){
x.pubDate = x.pubDate.toISOString();
db.getCollection('bond_sentiment_bulletin').save(x);
}
)

更改Date类型为String类型

db.getCollection('bond_sentiment_bulletin').find({"_id" : 419}).forEach(
function(x){
x.status = String(x.status);
db.getCollection('bond_sentiment_bulletin').save(x);
}
)

将类型转为str

db.getCollection('bond_sentiment_bulletin').find({"_id" : 419,'pubDate':{$type:9}}).forEach(
function(x){
x.pubDate = NumberLong(x.pubDate.getTime()/1000);
db.getCollection('bond_sentiment_bulletin').save(x);
}
)

把时间类型转为NumberLong的时间戳类型

db.getCollection('bond_sentiment_bulletin').find({'sentiment' : { $type : 1 }}).forEach(
function(x) {
x.sentiment = NumberInt(x.sentiment);
db.getCollection('bond_sentiment_bulletin').save(x);
}
)

修改double类型为int类型

db.getCollection('bond_sentiment_bulletin').find({'editTime': {$type:2}}).forEach(
function(doc){
db.getCollection('bond_sentiment_bulletin').update({'_id': doc._id},{$set:{'editTime': parseFloat(doc.editTime)}})
}
)

字符串转为浮点数

db.getCollection('bond_sentiment_bulletin').find({'editTime': {$type:2}}).forEach(
function(doc){
db.getCollection('bond_sentiment_bulletin').update({'_id': doc._id},{$set:{'editTime': parseInt(doc.editTime)}})
}
)

字符串转为double

参考:

https://blog.csdn.net/xc_zhou/article/details/86644144

修改MongDB的数据类型的更多相关文章

  1. Oracle增加一列、修改一列数据类型

    Oracle增加一列.修改一列数据类型: 添加一列: alter   table   A   add( CFYJSNR  varchar2(20)); 修改列: alter  table A  ren ...

  2. change可以重命名列名,也可能修改列的类型和约束,而modify只能修改列的数据类型。

    change 可以重命名列名,也可能修改列的数据类型,而modify只能修改列的数据类型. change 比modify功能多,如果要用change修改字段类型和约束,要加上新字段名,新字段名可以和原 ...

  3. SQL存储过程-新增和修改,参数Xml数据类型

    输入参数:xml数据类型  功能:新增和修改  --value() 方法从 XML 中检索 rogue 属性值.然后将该值分配给 int 变量. --将 Member 节点拆分成多行 SELECT T ...

  4. Oracle 如何修改列的数据类型

    链接:http://www.cnblogs.com/david-zhang-index/archive/2012/04/10/2441015.html 对字段操作 操作方法 更新字段名 alter t ...

  5. JavaScript初步学习----基本使用,简单事件,修改样式,数据类型

    JavaScript基本使用 JavaScript原名叫livescript,是一门动态类型,弱类型基于原型的脚本语言   用于页面特效,前后交替,后台开发(node)   JavaScript写在s ...

  6. SQL SERVER数据库的表中修改字段的数据类型后,不能保存

      在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...

  7. java之不修改变量的数据类型的处理方式

  8. ORA-01439: 要更改数据类型, 则要修改的列必须为空

    此方法有3处update操作,建议根据实际情况的数据量测试评估效率后选用. 思路:定义要更新数据类型的列为[col_old],数据类型为[datatype_old],临时列为[col_temp],数据 ...

  9. mysql 修改数据类型

    只修改列的数据类型的方法: 通常可以写成 alter table 表名 modify column 列名 新的列的类型 例如:student表中列sname的类型是char(20),现在要修改为var ...

随机推荐

  1. Efficient Estimation of Word Representations in Vector Space 论文笔记

    Mikolov T , Chen K , Corrado G , et al. Efficient Estimation of Word Representations in Vector Space ...

  2. Magicodes.IE 3.0重磅设计畅谈

    总体设计 Magicodes.IE导入导出通用库,支持Dto导入导出.模板导出.花式导出以及动态导出,支持Excel.Csv.Word.Pdf和Html. IE在去年年底重构一次之后,经过这么长时间的 ...

  3. 4G模块与WIFI模块的工作及应用区别

    在物联网行业中,4G模块和wifi模块经经常会被使用,但是由于网络不同,二者的工作原理和场景还是有很大的不同,本篇主要讲讲4G模块和WIFI模块的功能和应用场景 什么是4G模块? 4G模块是基于4G网 ...

  4. ansible快速部署cassandra3集群

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. C# 泛型集合的自定义类型排序

    一.泛型集合List<T>排序 经sort方法之后,采用了升序的方式进行排列的. List<int> list = new List<int>() { 2, 4, ...

  6. .NET必知的EventCounters性能指标监视器

    在.NET我们对于性能指标监控,其实常见的有两个方法,一个是CLI工具dotnet-counters而另一个是代码级别的EventListener. 使用dotnet-counters dotnet- ...

  7. 水题挑战6: CF1444A DIvision

    A. Division time limit per test1 second memory limit per test512 megabytes inputstandard input outpu ...

  8. offsetWidth与offsetHeight

    HTMLElement.offsetWidth 是一个只读属性,返回一个元素的布局宽度.一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(b ...

  9. linux 网络编程 基础

    网络编程基础 套接字编程需要指定套接字地址作为参数,不同的协议族有不同的地址结构,比如以太网其结构为sockaddr_in. 通用套接字: struct sockaddr { sa_family_t ...

  10. Linux踩坑之云服务器 ssh 连接不上

    前奏:今天没事处理一下之前远程不了Linux桌面的问题时,找到一个解决方法(开始入坑):                     systemctl set-default graphical.tar ...