最近用php往mongodb里面写数据的时候出现了一点小问题。就是毫秒级的时间戳保存到mongodb里面后数字被截断了。
例如:1439539213873保存后在mongo里显示为:725169713,这个不是我们想要的结果。
php代码:
$mongo = new MongoClient('mongodb://127.0.0.1:27017'); $db = $mongo->selectCollection("local", "test_data"); $data['num'] = 1439539213873; $res = $db->insert($data);
mongo里结果:
> db.test_data.find(); { "_id" : ObjectId("56b3036931a08a07628b4567"), "num" : 725169713 } >
解决方案:
1.查看php中mongo扩展的配置mongo.native_long,如果是0那在php.ini配置里面改为1;
2.对长整型的数字进行转换
$mongo = new MongoClient('mongodb://127.0.0.1:27017'); $db = $mongo->selectCollection("local", "test_data"); //$data['num'] = 1439539213873; $data['num'] = new MongoInt64('1439539213873');//进行转换 $res = $db->insert($data);
mongo里结果:
> db.test_data.find(); { "_id" : ObjectId("56b306c431a08ac80f8b4567"), "num" : NumberLong("1439539213873") } >
这样长的整型数字就不会被截断了。