mongodb未正确插入大整数(tweet id)
编辑:原来这不是问题。。呸!phpMOadmin无法显示bigint(可能是我不关心的服务器apache设置)。。不是mongoDB无法保存。。。u、 kodingen.com/1fMs5Z是我从CLI请求的,它很好地返回了!对不起,mongodbmongodb未正确插入大整数(tweet id),mongodb,Mongodb,编辑:原来这不是问题。。呸!phpMOadmin无法显示bigint(可能是我不关心的服务器apache设置)。。不是mongoDB无法保存。。。u、 kodingen.com/1fMs5Z是我从CLI请求的,它很好地返回了!对不起,mongodb 当我将tweet插入mongodb时,它的id(例如16906830606)变为-274549723 我们的服务器是64位的,我使用php mongo驱动程序 这是完整的插入代码 $content = file_get_contents("http
当我将tweet插入mongodb时,它的id(例如16906830606)变为-274549723 我们的服务器是64位的,我使用php mongo驱动程序 这是完整的插入代码
$content = file_get_contents("http://search.twitter.com/search.json?q=worldcup");
$decoded = json_decode($content,true);
$c = new Mongo("mongodb://x:pass@mng.vps.kodingen.com:27017");
foreach($decoded['results'] as $tweet)
{
$tweet['_id'] = $tweet['id'];
$c->db->tweets->insert($tweet);
}
这就是它如何保存:
如果我把它当作绳子
$tweet['_id'] = "" . $tweet['id'];
那么它是正确的:
我想知道为什么会发生这种情况,以及在您使用MongoDB时我还应该担心什么:)从这里开始。通常存储an的_id字段是12字节。64位整数是8字节。显然,它必须以某种方式进行转换。看起来,不是很好
时间戳和计数器字段必须以big-endian存储这一事实也可能起作用
<>我会考虑不把twitt ID用作ObjectID,因为你不能肯定他们不会在明天添加两个数字。 < P>使用InIySeT(Mung.NATEVEYRON),1);这将把你的整数数据存储为LontInt我同时发现了这个:嗨,Jonas,thx。它也不能在数组中存储任何大整数。。。签入\u回复\u至\u状态\u id我不想在插入之前检查数组并将所有整数转换为字符串..嗯,这是一个更糟糕的问题!事实证明这不是问题。。呸!phpMOadmin无法显示bigint。。不是mongoDB无法保存。。。我从CLI请求了,它返回jsut很好!好!!一些(全部?)JavaScript实现似乎也存在64位整数的问题。最好将tweet ID存储为字符串。MongoDB将大量数字存储为浮点数,这些浮点数会出现舍入错误