Php 如何将_id字段与$lt运算符一起使用

Php 如何将_id字段与$lt运算符一起使用,php,mongodb,Php,Mongodb,正如我所期望的,似乎小于构造不起作用。我尝试这样实现它: ... while( $cursor->hasNext() ){ $doc = $cursor->getNext(); $last_id = $doc['_id']->{'$id'}; } $condition = array('_id' => array('$lt' => $last_id)); $new_cursor = $collection->find($condition)-&

正如我所期望的,似乎小于构造不起作用。我尝试这样实现它:

...
while( $cursor->hasNext() ){
    $doc = $cursor->getNext();
    $last_id = $doc['_id']->{'$id'};
}
$condition = array('_id' => array('$lt' => $last_id));
$new_cursor = $collection->find($condition)->sort(array('_id' => -1))->limit(250);

我还尝试了“$gt”,但在这两种情况下,我都得到了空的结果集。注意$最后一个id是一个有效的id,在我在条件块中使用它之前可能需要进行一些转换。

默认情况下,\u id字段是一个ObjectId实例,它只是一个特殊的12字节BSON类型,可以保证集合中的唯一性。因此,您尝试将随机字节作为数字进行比较。对于类似自动递增的ID,使用计数器

它可能是一个字符串。将其转换为ObjectId以获得正确的结果。您能告诉我应该如何转换它吗?手册可以做到这一点:谢谢!现在它工作了!ObjectId是montonic,用外行的话来说,意思是不断增加是的,我错了。比较是可用的,如果它是ObjectId实例,但驱动程序可以从中生成字符串类型。不,ObjectId是ObjectId,这是问题的关键。即使表示为字符串,它仍然是词法的。所以没用。。