1

我在用:

$db->collection->find()->sort(array('username' => '-1'));

我不断收到错误:

MongoCursorException: localhost:27017: 尝试在不允许使用索引类型的情况下使用索引类型“-1”(仅限 1 或 -1)。

我正在使用 MongoDB 2.4.1 和 PHP 驱动程序 1.3.x。

为什么是这样?

4

1 回答 1

3

你已经像这样调用排序了:

sort(array('username' => '-1'));

这是一个问题。在 MongoDB 2.4.1 中有一个小问题(错误?),这意味着它将不再接受字符串进行排序。

由于这不在驱动程序中,而是在服务器(MongoDB 本身)中,因此仅更改驱动程序版本将无法解决此问题。

这可能比 MongoDB 2.4.1 更早存在,但是,我只是在 MongoDB 2.0.0 和 2.1.x 上测试了它,因此我没有在相同的 PHP 驱动程序版本(1.2.x 和 1.3.x)上观察到这种行为。

要解决此问题,您必须指定一个带符号的数字,如下所示:

sort(array('username' => -1));

那可行。

编辑

在 mongodb-user 谷歌组发帖后,我发现这不是一个错误,但是,它仍然需要注意。

于 2013-04-09T17:39:48.850 回答