mongo查询的奇葩问题
近期做了一个项目 ,自检的时候发现一个mongo 查询传递相同的参数 却会得到不同的数据,下面是打印处来的条件,一个可以正常化的获取数据另外一个不行 ,自检了函数的执行流程但是没发现问题 ,最后仔细的看了下数据类型 将 end_time 的条件强转成int 之后ok,; 那么问题来了 数据类型即使有问题 那么为什么有时候是对的呢
array(3) {
["end_time"]=>
array(2) {
["$gt"]=>
string(10) "1496332800"
["$lt"]=>
int(1496419199)
}
["cid"]=>
string(1) "1"
["status"]=>
int(0)
}
下面是自己封装的查询函数
/**
* @param $collect 集合的名字
* @param null $field
* @param null $where 条件
* @param null $order 排序
* @param $listRows 每页显示的条数
* @param string $searchType 本函数执行的目的 collect获取集合 count 计算符合条件的数据的数量
* @return mixed
*/
public function queryMongo($collect, $field = null, $where = null, $order = null, $listRows = null, $searchType = 'collect')
{
//加入分页的机制
$crsmongo = new CrsMongoModel();
$crsmongo->setConfig($collect);
$object = $crsmongo->field($field);
if (!empty($where)) {
$object->where($where);
}
if (!empty($order)) {
$object->order($order);
}
$totalRows = $object->count();
if ($searchType === 'count') {
return $totalRows;
}
if (!empty($listRows)) {
$Page = new Page($totalRows, $listRows);
$object->limit($Page->firstRow, $Page->listRows);
}
$info = $object->select();
return $info;
}