mongodb字段类型转化

最近在使用mongoDB, 发现mongo对字段类型的定义并不是很严格,完全依赖传入数据的类型,在加上PHP是弱类型的语言,所以难免会出现一些错误。如果预想的类型是Int型,但数据存储的是String,那数据在根据Int型检索的时候,就完全失效了。如果发现某个字段在存储的时候出现了分歧怎么办?当然首先要修正程序在数据传入时候的错误,对于Int型一定要保证其类型的正确性。

example:

1
2
3
$user_arr = array (
  ‘uid‘ => intval ($_SESSION["user"]["id"]),  //对于Int类型的数据,一定要保证其类型的正确性!
);

 

 

那如何修正当前已存在数据类型的不同呢?!

查询所有字段类型是String的数据,然后将String转为Int:

1
2
3
4
5
6
7
db.you_collection_name.find(‘uid‘ : { $type : 2 }).forEach(
  function(x)
  {
    x.uid = parseInt(x.uid) ;        //将String转为Int
    db.you_collection_name.save(x);
  }
)

 

 

 

 

对于mongoDB字段类型的定义可参考:http://docs.mongodb.org/manual/reference/operator/type/#_S_type

 

转自 http://www.wangwei.info/2013/07/mongodb-type-conversion/

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。