2012-01-08 8 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によって順序付けされていることの結果なのですか?私はこれを行うにはMongoの宝石を使用した場合、クエリはまだ

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」 と「クエリ」 。

デフォルトでは、距離でソートされています。

また、あなたのルビーmongomapper当量が

Users.where(:loc => {'$nearSphere' => [-122, 37],'$maxDistance'=>20/6378 }).sort(:created_at.desc) 
(良く確認し、わからない)かもしれません。この

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

のようなあなたの球状のクエリを書くことができます