近期做了一个项目 ,自检的时候发现一个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; }