问题描述
在php+mongodb开发中使用$in进行查询报错:$in needs an array
打印了$in
的参数,确认是数组没错,仔细比对后发现是索引问题
原因分析:
MongoDB 2.6.0版本后,$in
的参数需要为数组,而且必须是索引数组,如果数组的索引存在问题,则会被转换为bson结构,就会报上面的错误。
索引数组是指索引从0开始,且自动分配递增的数组,下面两种是不行的:
$a = [0 => 'a', 1 => 'b', 3 => 'c'];
$b = [1 => 'a', 2 => 'b', 3 => 'c'];
解决方案:
可以通过array_values
函数刷新数组的索引。