2
我有一个相对复杂的查询,我正在运行。我已经将它包含在下面,但基本上,我有一个位置查询与$或$ in查询结合在一起,全部按照日期/时间排序。每当我运行完整的查询,尽管它以升序而不是降序返回。适当的索引和MongoDB排序
如果我拉出查询的位置部分,它将按照正确的顺序成功返回结果,但是一旦我将查询的位置组件重新放入,它将继续失败。
这里是写在PHP查询:
$query = array(
'$or' => array(
array(ISPUBLIC => true),
array(GROUP_INVITES.".".TO.".".INVITE_VAL => array('$in' => $user_groups))
),
LOC => array('$near' => array((float)$lon , (float)$lat), '$maxDistance' => 1) //Using 1 degree for the max distance for now
);
$res = $this->db->find($query)->sort(array('ts'=>-1))->limit($limit)->skip($start);
使用的字段映射到数据库中的字段常量。我的第一个假设是索引配置不正确,但如何将地理空间查询与其他索引结合使用时,我该如何编制索引?
UPDATE
我已经下简化了查询,能够重现问题:
$query = array(
HOLLER_GROUP_INVITES.".".HOLLER_TO.".".INVITE_VAL => array('$in' => $user_groups),
HOLLER_LOC => array('$near' => array((float)$lon , (float)$lat), '$maxDistance' => 1)
);
更新2
我已经运行额外的测试看起来当限制被删除时,它按照正确的方向排序。不知道这里发生了什么。