如何在$ lt运算符中使用_id字段

时间:2015-01-23 10:02:16

标签: php mongodb

似乎less than构造不起作用,正如我所料。我试着像这样实现它:

...
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',但在这两种情况下我都会得到空的结果集。 NB。 $ last_id是一个有效的id,在我在条件块中使用它之前可能需要进行一些转换。

1 个答案:

答案 0 :(得分:-1)

默认情况下,_id字段是一个ObjectId实例,它只是一个特殊的12字节BSON类型,可以保证集合中的唯一性。所以你试图将随机字节作为数字进行比较。对于类似自动增量的ID,请使用计数器http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/