Php MongoDB导出浮动\u id
我刚开始使用mongoDB,有一些问题。Php MongoDB导出浮动\u id,php,mongodb,Php,Mongodb,我刚开始使用mongoDB,有一些问题。 第一个: 我已将csv文件导入MongoDB 当我尝试在mongo cli中查找数据时,我得到的id如下所示: db.test.find({}, {_id: 1}).limit(5); { "_id" : NumberLong("724756511264022954") } { "_id" : NumberLong("7925523805856237974") } { "_id" : NumberLong("3278364823767039230") }
第一个:
我已将csv文件导入MongoDB
当我尝试在mongo cli中查找数据时,我得到的id如下所示:
db.test.find({}, {_id: 1}).limit(5);
{ "_id" : NumberLong("724756511264022954") }
{ "_id" : NumberLong("7925523805856237974") }
{ "_id" : NumberLong("3278364823767039230") }
{ "_id" : 12477933649175871000 }
{ "_id" : 9648786610610065000 }
但是,PHP,
返回以下内容:
724756511264029547925523805856237974
3278364823767039230
1.2477934649176E+19
9.6487866106101E+18
echo sprintf("%u", ($document['_id'])) . "\n";
返回错误的结果
724756511264029547925523805856237974
3278364823767039230
12477933649175871488
9648786610610065408
echo sprintf("%u", ($document['_id'])) . "\n";
如何返回完整的整数结果?
也许,有任何方法可以将所有ID转换为ObjectId
BYW:mongoexport返回带有E+19的结果这是正确的。您的一些值是
NumberLong
,但其他未显示的值实际上是作为BSON类型的Double
,从技术上讲,这当然是一个浮点值。如果期望不同,则需要将其他值重新编码为NumberLong
(基于64位整数)。当然,您不能只使用\u id
,因此您需要删除文档并重写它们。按设计工作,没错。您的一些值是NumberLong
,但其他未显示的值实际上是作为BSON类型的Double
,从技术上讲,这当然是一个浮点值。如果期望不同,则需要将其他值重新编码为NumberLong
(基于64位整数)。当然,您不能只使用\u id
,因此您需要删除文档并重写它们。按设计工作。