2012-01-08 3 views
0

그래서 mongodb에서 runCommand를 사용하여 geoNear를 수행하고 결과를 날짜순으로 정렬하려고합니다.MongoDB 및 Ruby : runCommand geoNear 및 날짜순 정렬

나는 첫 번째 부분

db.users.runCommand({'geoNear' :"users",'near' : [-76.483999, 42.402794], 'spherical' : true, 'maxDistance' : 20/6378 })

을 수행하는 방법을 알고 있지만 방법은 내가이 created_at으로 정렬되는 결과 등 어떻게해야합니까? 나는이 작업을 수행 몽고 보석을 사용한다면, 쿼리가 여전히

User.database.command({'geoNear'=>"users",'near' => [-122, 37]}, 'spherical' => true, 'maxDistance' => 20/6378)

과 같을 것이다, 나는 날짜를 정렬하는 방법을 모르겠어요. 이 경우 created_at에 대한 인덱스를 사용할 것을 고려하고있었습니다. location과 created_at 모두에 인덱스가 있지만 결과는 created_at date의 순서로 반환되지 않습니다. 누구든지이 작업을 수행하는 방법에 대한 단서가 있습니까?

답변

1

나는 링크에 따라, geonear 명령에 종류의 추가는 가능 해달라고 생각

유효한 옵션은 "근처", "NUM", "maxDistance", "distanceMultiplier" 및 "쿼리" .

기본적으로 거리별로 정렬됩니다.

는 다른 방법이

db.users.find({ loc : { $nearSphere : [80.21223299999997, 13.034892],$maxDistance:20/6378 } }).sort({ created_at : -1 }) //-1 for descending 

당신의 루비 mongomapper에 해당 될 (확실하지, 더 나은 확인) 할 수

Users.where(:loc => {'$nearSphere' => [-122, 37],'$maxDistance'=>20/6378 }).sort(:created_at.desc) 
처럼 구형 쿼리를 작성할 수 있습니다
관련 문제