MongoDB的类型转换。包括:string转double, string转int, string转Date

//string转为double类型
db.law.find({'state' : { $type : 2 }}).forEach( function (x) {
  x.state = parseInt(x.state);
  db.law.save(x);
});
 
//string转为int类型
db.law.find().forEach( function (x) {
  x.ise= NumberInt(x.ise);
  db.law.save(x);
});
 
//string转化为date类型
db.law.find().forEach( function (x) {
 x.eift = new ISODate(x.eift);
  db.law.save(x);
});
//string转decimal
db.law.find().forEach(function(x) {
    x.num_string = NumberDecimal(Number(x.num_string));
    db.law.save(x);
})

//将其转为string类型
db.law.find({ID:{$exists:true}}).forEach(function(x){
    x.ID=new String(x.ID);
    db.law.save(x);//保存
});

$type 有效的类型值,如下:

Type Number Alias Notes
Double 1 “double” 浮点型 
String 2 “string” UTF-8字符串都可表示为字符串类型的数据
Object 3 “object” Object 对象,嵌套另外的文档 
Array 4 “array” 值的集合或者列表可以表示成数组 
Binary data 5 “binData” 二进制 
Undefined 6 “undefined” Deprecated.
ObjectId 7 “objectId” 对象id是文档的12字节的唯一 ID 系统默认会自动生成 
Boolean 8 “bool” 布尔类型有两个值TRUE和FALSE 
Date 9 “date” 日期类型存储的是从标准纪元开始的毫秒数。不存储时区 
Null 10 “null” 用于表示空值或者不存在的字段 
Regular Expression 11 “regex” 采用js 的正则表达式语法 
DBPointer 12 “dbPointer” Deprecated.
JavaScript 13 “javascript” 可以存放Javasript 代码
Symbol 14 “symbol” Deprecated.
JavaScript (with scope) 15 “javascriptWithScope”  
32-bit integer 16 “int” 32位整数类型 
Timestamp 17 “timestamp” 时间戳数据类型 
64-bit integer 18 “long” 64位整数类型 
Decimal128 19 “decimal” New in version 3.4.
Min key -1 “minKey”  
Max key 127 “maxKey”  

$type使用法语:

db.集合名.find({$type:类型值});    //这里的类型值能使用Number也能使用alias

查看“times”该字段的数据类型:

db.getCollection('content').find({"times":{$type:"long"}});
db.getCollection('content').find({"times":{$type:18}});

MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中,当我们取出存储的时间时,就会出现时差的问题。比如我们用的北京时间,读取到的数值就会看到比当前时间少了8个小时,难道说我们在每次读取的时候都要单独处理一下时间吗,这就比较麻烦。其实,我们可以在存储的时候进行相应的处理,只需使用getTimezoneOffset()toISOString()函数。

localDate(v) {
	const d = new Date(v || Date.now());
	d.setMinutes(d.getMinutes() - d.getTimezoneOffset());
	return d.toISOString();
},

我们在存储时间的时候调用localDate()这个函数就可以了,无论你处在哪个时区结果显示都和当地时间一样。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐