试图使用索引类型'-1'其中不允许索引类型(仅1或-1)


Attempting to use index type '-1' where index types are not allowed (1 or -1 only)

我使用的是:

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

我一直得到错误:

mongocursoreexception: localhost:27017:尝试使用索引类型'-1'表示不允许索引类型(仅为1或-1)。

我使用MongoDB 2.4.1与PHP驱动程序1.3.x。

为什么会这样?

您已经像这样调用了sort:

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

这是个问题。在MongoDB 2.4.1有一个轻微的怪癖(bug?),这意味着它将不再接受字符串排序排序。

由于这不是在驱动程序,而是在服务器(MongoDB本身)简单地改变驱动程序版本不会解决这个问题。

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

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

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

可以。

编辑

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