mongoDB字段类型的转换

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

example:

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

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

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

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