尝试使用不允许索引类型的索引类型“-1”(仅限1或-1)

时间:2013-04-09 17:39:49

标签: php mongodb mongodb-php

我正在使用:

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

我一直收到错误:

  

MongoCursorException:localhost:27017:尝试使用索引类型   '-1',其中不允许索引类型(仅限1或-1)。

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

为什么会这样?

1 个答案:

答案 0 :(得分:3)

你这样称之为:

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

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

由于这不在驱动程序中,而是在服务器(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谷歌小组发帖后,我发现这不是一个错误,但是,它仍然需要注意。