2011-08-08 7 views
1

私はdoctrine-mongodbプロジェクトを書き直さずにgeoNearコマンドを実行する方法を見ています。私はExpr.phpとBuilder.phpファイルを見てきましたが、geoNearコマンドへの参照が見つかりませんでした。どのようにして私のDoctrine MongoDB ODMでこの機能を利用できますか?Doctrine MongoDB geoNear

ありがとうございました

答えて

0

あなたのライブラリのバージョンはいくつですか?

Doctrine MongoDb mappers's trunkで利用可能geoNearコマンド、$qb->near(array($x, $y))の実装があります。しかし、それは非常に迅速にテストした、私はそれが広範な使い方でどのように良い作品を伝えることはできません。 geoNearが本当にMongoDBのチームによってFoursquareのために作られたハックであることを念頭に置いてSee the code

しかし、クマ:

1

DoctrineODMのlastesバージョンはgeoNear方法があります。 $near Doc for Mongo 2.2

$query->field('coordinates') 
     ->equals(array('$near' => array($lat, $lon) 
        , '$maxDistance' => $maxDistanceKm/111)); 

警告:$近くはモンゴ2.4に変更

使用$代わりの近くにそれは距離順のみ最初の100件の結果を返します(そして、あなたはページ付けすることはできません)今度は最初の100アイテムだけを返します:$near Doc for Mongo 2.4


あなたが$geoWithin(またはモンゴ2.2で$within)を使用し、距離によってソートする必要がない場合は、他のフィールドで並べ替えると、ページ付けすることができます

$query->field('coordinates') 
     ->equals(array('$within' => array('$center' => array(array($lat, $lon) 
             , $maxDistanceKm/111)))); 
+0

だから、 '$のnear'で(制限)ページ付けすることはできませんか? –

+1

前回チェックした:いいえ。新しいMongoでは集約フレームワークを使用していますが、多くの操作がメモリ上で行われるため、16Mbの結果に限られています – Madarco

関連する問題