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
我已經運行額外的測試看起來當限制被刪除時,它按照正確的方向排序。不知道這裏發生了什麼。