我使用的是:
$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,但是,它仍然需要注意。