MongoDB _id超过9999999

时间:2014-03-29 12:06:51

标签: mongodb

我有一个包含超过10M文档的集合。 我正在尝试使用PHP

获取Mongo集合的最大_id格式
$cursor = $collection->find(array())->sort(array('_id'=>-1))->limit(1);
foreach ($cursor as $doc)
{
    echo $doc['_id'];
}

我每次都得到9999999作为答案。

这也不起作用

$cursor = $collection->find(array('_id'=>array('$gte'=>'5000000')))->sort(array('_id'=>-1))->limit(1);

我也尝试使用Aggregate

$query = array(
    array('$match'=>array('_id'=>array('$gte'=>'5000000'))),
    array('$group'=>array('_id'=>'','max_id'=>array('$max'=>'$_id'))),

);
$res = $collection->aggregate($query);
print_r($res);

弹出相同的9999999,但这次计算需要6-7秒。

在我看来,MongoDB中有一个限制阻止我超越9999999

1 个答案:

答案 0 :(得分:1)

您没有直接显示它,但您的_id值似乎是数字字符串,而不是数字。字符串按字母顺序排序,因此'9999999'(甚至'9')会在降序排序中位于'10000000'之前。

您最好的选择可能是更新您的文档以使用_id的数字数据类型,然后按照您的预期排序。