web-dev-qa-db-ja.com

maxdistanceとMongoDBに使用する単位は?

私は、MongoDBと地理空間検索について理解しようとしています。基本的に私が欲しいのは、ユーザーがユーザーの現在の場所から設定された距離内で撮影されたドキュメント(画像)をクエリできるようにすることです。ユーザーが立っている場所から1 km以内で撮影されたすべての画像を検索しているので、次の例を使用しようとしますが、maxdistance値として何を設定するのかわかりません。

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})

だから私の質問は、半径1 km以内のドキュメントを検索する場合、maxdistanceとして何を設定するのですか?

私はここで完全に行き詰まっています。

35
Jonathan Clark

Km境界でmongodb $nearクエリを使用するには、半径の値をkmに変換する必要があります。デフォルトでは、mongodb $ nearは$maxDistanceradiusとして受け入れます。

Kmを使用する場合は111.12(1度は約111.12キロメートル)で距離を変換するか、または度を使用する場合は距離をそのままにします

あなたの質問に

半径1 km以内のドキュメントを検索する場合、maxdistanceとして何を設定しますか?

あなたはこれを使うことができます

   db.places.find( { loc : { $near : [50,50] , $maxDistance : 1/111.12 } } )

私はここで詳細に mongo地理空間機能の使用方法に回答しました 。チェックアウトできます

67
RameshVel

MongoDBのバージョン2.4以降、次のように、半径をメートル単位で$ maxDistanceの値として直接指定できます。

db.<collection>.find({loc: {$near : 
                               {$geometry : 
                                   {
                                    type: 'Point', 
                                    coordinates: [<longitude> , <latitude>]       
                                   }
                               }, 
                               $maxDistance: 10*100 
                           }
                     }); 
16
Ivan Hristov