1

私はmongodb docから、そのdb.runCommandがgeoNearリターン距離を持つこともわかります。

node.js で mongoose を使用していますが、Model.find({'loc': { $near: [lng, lat], $maxDistance:5/111.12},... で同じことが達成できるかどうかを知りたいです。 .)

複数の 2D インデックスがある場合、geoNear を使用した runCommand は機能しません。コレクションに 2 つの 2d インデックスがあります。1 つはスキーマで定義され、もう 1 つは DbRef の一部です。

また、マングースで runco​​mmand に使用される正確な構文については、あまり満足していません。

4

1 に答える 1

1

geoNearは、ネイティブ MongoDB ドライバーで使用できるため、mongoose の拡張機能により、ドキュメント内のすべての geo インデックスを検索し、複数回返すことができます。パラメーター uniqueDocs を渡して、重複したエントリがないことを確認できます。

collection.geoNear(50, 50, {uniqueDocs:true}, function(err, docs) {
});

別の方法として、特定のフィールドに対してニア クエリを実行することもできますが、適切な範囲を取得するには、距離の値を変換する必要がある場合があります。それが何だったのか、頭の中で覚えていません。実験するのに最適な場所は mongoshell で、それを node.js のコマンドに変換するだけです。

于 2012-06-27T17:14:26.880 に答える