2012-04-24 3 views
0

MongoidまたはMongoMapperのようなORMラッパーのないrubyドライバを使用して、mongodbにバウンディングボックスジオクエリーを発行する方法を解明しようとしています。MongoDB Ruby Bounds ORMなしのクエリ

私はnearコマンドを実行することはできますが問題はありませんが、内部でfindの構文を理解できないようです。

box = [[34.05,-118.24],[35.80,116.44]] 
coll = db.command({'within' => "sites", 'box' => box} 

または

:私は半径

conn = Mongo::Connection.from_uri('my DB') 
    db = conn.db('my_sites') 
    coll = db.command({'geoNear' => "sites", 
      'near'=>[lng,lat], 
      'spherical' => true, 
      'maxDistance' => distance_in_radians, 
      'num' => limit}) 
    render :json => coll['results'].to_a 

以内に照会したい。しかし、私は右の内のクエリを得ることに困惑していた場合

はこれが作品の魅力のように

db['my_sites'] 
coll = db.find({"box" => box}) 

私はmongoクライアントで直接問合せを発行できますが、私はRubyドライバの構文を理解しています。

答えて

0

私の知る限り、MongoDBのシェルのバージョンは次のようになります。私はあなたがしたいと思いますので、

db.my_sites.find(loc: { $within: { $box: box } }) 

低水準のRubyインタフェースは、一般的に、JavaScriptのインターフェースを反映:

db['my_sites'].find(:loc => { :$within => { :$box => box } }) 

私はしないでください地理的に便利なコレクションを用意して、私が確かめるためにテストすることはできません。