我有一个包含超过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
答案 0 :(得分:1)
您没有直接显示它,但您的_id
值似乎是数字字符串,而不是数字。字符串按字母顺序排序,因此'9999999'
(甚至'9'
)会在降序排序中位于'10000000'
之前。
您最好的选择可能是更新您的文档以使用_id
的数字数据类型,然后按照您的预期排序。