2016-06-27 5 views
0

コレクションでニアクエリーを使用するときにいくつか問題が発生します。mongodb min/maxDistance on nearコマンド

私は2dsphereインデックスを使用しています。近くの場所やページを取得したいと考えています。 私が注目する最初のことは、オフセットが近くで動作していないことです。だからこれはmin/maxDistanceでエミュレートするのが簡単なはずです

しかし、私はminDistanceやmaxDistanceの作業クエリを動作させないようにする方法を理解できません。ここで

私が使用しているコマンドです:minDistaceが出力されます0の結果を設定されている場合

db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "minDistance": 60 }); 
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137 }); 
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "maxDistance": 60 }); 
  1. 、それはどのような数のI入力が問題ではありません。また、統計情報では、nscanned 1が間違っていて、インデックス内のドキュメント数299である必要があります。

  2. と3意志出力100の結果の両方まったく同じ(シリアライズ実体が大であると私は必要としない100結果が遅い場合これも問題である)とnscannedは299

これです私はこのクエリはにGeoJSONポイントが使用されている場合にのみ動作することが分かった3.2.6

答えて

0

をDoctrineODMを使用し、MongoDBのだ

{ 
    "v" : 1, 
    "name" : "coordinates_2dsphere", 
    "ns" : "mydb.Place", 
    "sparse" : false, 
    "2dsphereIndexVersion" : 3 
} 

:私の指標です。そう言って

ドキュメント:(https://docs.mongodb.com/manual/reference/operator/query/near/#op._S_near

が、これは作業コマンドです:

db.Place.runCommand({ "geoNear": "Place", "near": { "type": "Point", "coordinates": [ 49, 14 ] }, "spherical": true, "query": [ ], "distanceMultiplier": 0.001, "maxDistance": 70000, "minDistance": 10000 }); 

唯一の違いは、にGeoJSONはメートルで動作することである