这可能是个愚蠢的问题,但我很难在mongoDB文档中保存一个大的数字。
基本上,我想保存一个可以大于最大int值的数字。因此,我将文档字段声明为@Field(type="float")。
现在的问题是,保存数字会导致错误。我也尝试简单地使用@Integer,但是这个数字减少到了2147483647 (这是32位系统的最大int值)。
所以我尝试了最后一个解决方案,用字符串保存我的号码。这很好(至少在数据库中似乎是正确的),但是返回文档和执行echo $number会让我返回2147483647。
有人能解决这个问题吗?我做错什么了?
发布于 2016-01-09 05:39:20
最后一件事:这个值被显示为max-int值,因为PHP将它视为数字。您可以看到更多关于这个过程的这里。
MongoDB扩展本身确实支持使用MongoInt64的32位系统上的64位整数,但是Doctrine在从mongodb中补水时不以不同的方式处理32位整数或64位整数,因此您将永远不会看到64位值作为MongoInt64类返回,即使PHP可以支持它--它不能:)
因此,我会说,您的选项要么将值强制为字符串(echo (String) $number;),要么尝试解决为什么要将值保存为浮点的错误。在php中存在具有浮动的精确问题,这可能使它无法以这种方式存储数字。
希望这能有所帮助!
https://stackoverflow.com/questions/34687439
复制相似问题