Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb未正确插入大整数(tweet id)_Mongodb - Fatal编程技术网

mongodb未正确插入大整数(tweet id)

mongodb未正确插入大整数(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

编辑:原来这不是问题。。呸!phpMOadmin无法显示bigint(可能是我不关心的服务器apache设置)。。不是mongoDB无法保存。。。u、 kodingen.com/1fMs5Z是我从CLI请求的,它很好地返回了!对不起,mongodb


当我将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将大量数字存储为浮点数,这些浮点数会出现舍入错误