나는 비교적 복잡한 쿼리를 실행하고 있습니다. 나는 그것을 아래에 포함 시켰지만 본질적으로 날짜/시간순으로 정렬되는 쿼리에서 $ 또는 $와 결합 된 위치 쿼리를 가지고 있습니다. 내림차순보다는 오름차순으로 반환하지만 전체 쿼리를 실행할 때마다MongoDB를 사용한 적절한 색인 생성 및 정렬
쿼리의 위치 부분을 제거하면 올바른 순서로 결과가 성공적으로 반환되지만 쿼리의 위치 구성 요소를 다시 넣으면 계속 실패합니다.
$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);
사용되는 필드는 데이터베이스의 필드에 매핑 상수 :
다음은 PHP로 작성된으로 쿼리입니다. 필자의 첫 번째 가정은 인덱스가 제대로 구성되지 않았지만 지리 정보 쿼리를 다른 인덱스와 결합 할 때이 인덱스를 어떻게 사용해야합니까? 나는 아래로 쿼리를 단순화하여 문제를 복제 할 수있었습니다
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)
);
UPDATE 2
나는 추가 테스트를 실행했습니다 한계가 제거되면 올바른 방향으로 정렬됩니다. 무슨 일이 벌어지고 있는지 모르겠다.