Mongodb 字段类型转换-horizonhyg-ChinaUnix博客

创建时间:2016/7/7 9:07
来源:http://blog.chinaunix.net/uid-15795819-id-3873422.html


  • 博客访问: 391066
  • 博文数量: 53
  • 博客积分: 757
  • 博客等级: 上士
  • 技术积分: 1888
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-29 14:29
个人简介

DBA

文章分类

全部博文(53)

文章存档

2015年(3)

2014年(2)

2013年(15)

2012年(21)

2011年(12)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
Mongodb 字段类型转换 2013-08-29 13:54:11

分类: NOSQL

      最近一些项目由于历史原因,字段类型存储混乱,比如一个collection里modifedDate列,有的存的是ISODate类型,有的是NumberLong时间戳,这在Mongodb中是严重不推荐的,需要转换成统一的。Mongodb并不提供Alter table这样的语句或者工具,只能写程序转。
      Mongodb的客户端是js写的,其实用js写脚本就可以实现。
      以上面的例子来说,要将ISODate类型全都转换为NumberLong时间戳:
      1、查询多少记录是ISODate类型
      ①、$type

  1. db.table_name.find({modifedDate:{$type:9}}).count()
      其中的9是Mongodb定义的BSON Date类型对应的数字。下面这张表是BSON TYPE及他们对应的数字。
                    
 ②、forEach函数和instanceof

  1. count=0;
  2. db.table_name.find().forEach(function(x){if(x.modifedDate instanceof Date){count++}});
  3. print(count);
      2、修改类型
      使用forEach函数
      
  1. db.table_name.find({modifedDate:{$type:9}}).forEach(function(x){x.modifiedDate=NumberLong(x.modifiedDate.getTime()/1000);db.table_name.save(x)})



.
阅读(16207) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册


关于我们 | 关于IT168 | 联系方式 | 广告合作 | 法律声明 | 免费注册

Copyright 2001-2010 ChinaUnix.net All Rights Reserved 北京皓辰网域网络信息技术有限公司. 版权所有

感谢所有关心和支持过ChinaUnix的朋友们

京ICP证041476号 京ICP证060528号