私はdoctrine-mongodbプロジェクトを書き直さずにgeoNearコマンドを実行する方法を見ています。私はExpr.phpとBuilder.phpファイルを見てきましたが、geoNearコマンドへの参照が見つかりませんでした。どのようにして私のDoctrine MongoDB ODMでこの機能を利用できますか?Doctrine MongoDB geoNear
ありがとうございました
私はdoctrine-mongodbプロジェクトを書き直さずにgeoNearコマンドを実行する方法を見ています。私はExpr.phpとBuilder.phpファイルを見てきましたが、geoNearコマンドへの参照が見つかりませんでした。どのようにして私のDoctrine MongoDB ODMでこの機能を利用できますか?Doctrine MongoDB geoNear
ありがとうございました
あなたのライブラリのバージョンはいくつですか?
Doctrine MongoDb mappers's trunkで利用可能geoNearコマンド、$qb->near(array($x, $y))
の実装があります。しかし、それは非常に迅速にテストした、私はそれが広範な使い方でどのように良い作品を伝えることはできません。 geoNear
が本当にMongoDBのチームによってFoursquareのために作られたハックであることを念頭に置いてSee the code
しかし、クマ:
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))));
だから、 '$のnear'で(制限)ページ付けすることはできませんか? –
前回チェックした:いいえ。新しいMongoでは集約フレームワークを使用していますが、多くの操作がメモリ上で行われるため、16Mbの結果に限られています – Madarco