Doctrine ODM 如何保存大量数据?

3
这可能是一个愚蠢的问题,但我在尝试将一个大数字保存到mongoDB文档时遇到了困难。基本上,我想要保存一个大于最大整数值的数字。因此,我将我的文档字段声明为@Field(type="float")。现在的问题是,保存数字会导致错误。我还尝试过简单地使用@Integer,但数字被减少到2147483647(这是32位系统的最大整数值)。所以我尝试了最后一种解决方案,将我的数字保存为字符串。这个方法很好用(至少在数据库中看起来是正确的),但返回文档并执行echo $number会使我得到2147483647。有人有解决办法吗?我做错了什么?

它没有返回缓存值吗? - malcolm
1个回答

3
首先解释一下:该值被显示为最大整数值,是因为PHP将其视为数字。您可以在此处了解更多信息。
MongoDB扩展本身支持在32位系统上使用 MongoInt64的64位整数,但Doctrine ODM在从MongoDB水合回来时不会处理32位或64位整数的差异,因此即使PHP支持它(实际上不支持 :)),您也永远看不到64位值返回为MongoInt64类。
因此,我建议您要么将该值强制转换为字符串(echo(String)$number;),要么尝试排除保存该值为浮点数时出现错误的原因。无论如何,在php中使用浮点数存在精度问题,这可能使以这种方式存储该数字变得不可行。
希望这可以帮助您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接