問題タブ [2dsphere]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - MongoDB 地理空間クエリが何も返さない
インデックスを持つコレクションがあり、関数と関数を使用してクエリを実行し2dsphere
たいと考えています。$geoWithin
$centerSphere
モデルの抜粋:
一連のドキュメントをデータベースに正常に挿入したので、次の方法でクエリを実行しようとしました。
私が直面している問題は、呼び出しが何も返さず、エラーもデータも返さないことです。mongo shell
確認できるオブジェクトの経度と緯度を使用して、アプリケーションと同様にアプリケーションで試してみましたがnode.js
、データベースに挿入されました。私も同じ結果$near
で aを使用しようとしました。$maxDistance
さらに、確認のために緯度と経度を切り替えました...そしてr
、地球の半径で割ってラジアンに変換します。
この時点で何がうまくいかないのかについてのアイデアがありません。提案に感謝します!
mongodb - mongoDB で 2dsphere インデックスを作成できない
mongoDB で 2dsphere インデックスを作成しようとすると、次のエラー メッセージが表示されます。
コレクションデータは次のようになります。
ポリゴン領域で座標を検索するには、2dsphere インデックスを作成する必要があります。どうすればこれを修正できますか? ありがとう
mongodb - mongodb geoWithin クエリが非常に遅い
約 500km² のポリゴンで geoWithin クエリを実行していますが、実行に非常に時間がかかり、30 秒から 5 分ほどかかります。コレクションはわずか 18 万行で、ポリゴンは 2km² から 10,000km² の範囲である可能性があります。サーバーには約4GBのRAMがあります。(ネットワークの遅延をなくすために) ローカルで実行しても、顕著な効果はありません。
コレクションに 2dsphere インデックスを設定し、フィールドの数を _id のみを返すように制限しました (今のところ)。
これは私のドキュメントがどのように見えるかです:
これが私のインデックスです:
これが私のクエリです:
そして、これが実行からの出力ですexplain()
これは、インデックスが使用されていることを示唆しています。小さい領域で試してみると、クエリは高速になり、領域が大きくなると遅くなります。
ここに私のコレクション統計があります:
コマンドを実行db.setProfilingLevel(2)
し、クエリを再実行してから、db.system.profile
コレクションを調べました。
最初のレコードは実際のクエリです ( "op": "query"
)
"op": "getmore"
次に、残りのデータをフェッチしていると思われる( ) を使用したさらに 7 つのクエリ。
各クエリは 1000 行 ( "nreturned": 1000
) を生成し、各クエリの平均は 4000millis
です。
geojson クエリが 2 秒を超えて 100 万行を超えることについて人々が不平を言っている多くの質問を読んだので、明らかに単純なものが欠けています。
mongodb - 平均スタック 2dsphere 半径検索
私はスタック(および一般的なプログラミング)を意味するのは初めてですが、単純なアプリを稼働させています。
私のモデルは次のようになります。
データベースに次のものをシードします。
私のコントローラーは、次の方法でユーザーの場所を抽出し、レストランを一覧表示します。
そして、私のビューにはユーザーの場所が表示され、最大の入力が取られ、次の方法でレストランがリストされます。
私は yeoman angular-fullstack ジェネレーターを使用しました。私のhtmlビューでは、ユーザーの現在の場所「lat」と「lng」を抽出し、ユーザーから最大距離内にあるレストランのデータベースを検索したいと考えています。
この足場でこれを行うにはどうすればよいですか? これらの例/チュートリアルを機能させようとしましたが、役に立ちませんでした:(
mongodb - Mongoose Mongo 2dsphere geoWithin
私に非常に近い多くの質問を読み、MongoDB のドキュメントと Mongoose のドキュメントを読んだ後でも、質問に答えることができません。
Node 4.4.0でexpress 4.13.4、mongoose 4.4.10、mongodb 2.1.14を使用
私のマングースの場所のスキーマ:
私のCatalogModel
スキーマ(Mongoに書いたもの):
具体的な例を作成し、MongoDB に書き込みます (これは正常に動作します... Mongo でクエリを実行できるという点で)
Mongo では、コレクションにインデックスを要求しました。
そして、これはそれが言っていることです(これが何を意味するのか完全にはわかりません)
を実行してdb.catalogmodels.find()
、ドキュメントを取り戻すことができます。
Mongo で $geoWithin 呼び出しを行うこともできます。
しかし、実際の質問は次のとおりです。
Mongoose は私に言い続けます[エラー: $geoWithin を使用できません]
また、.find().where().within() 呼び出しを次のように置き換えました。
Mongoose が $geoWithin 呼び出しを好まない理由はありますか? 最新の API によると、これは機能するはずです。
mongodb - mongodb 2dsphere インデックスの内部とは何ですか?
Mongodb サイトは、2d インデックスの内部構造を示していますGeoHash
。
2dsphere index の内部を知りたいです。
それはGeoHash
、Cartesian Tiers
または他の技術者ですか?
2dsphere インデックスを紹介するmongodb サイトnew-geo-featuresのブログを見つけました。
しかし、詳細はありません。
mongodb - MongoDB エラー コード 16755 - ジオ キーを抽出できず、頂点が重複しています
geometry にインデックスを作成しようとするdb.polygons.createIndex({"geometry":"2dsphere"})
と、エラー コード 16755 で特定のポリゴンで停止しCan't extract geo keys
ますDuplicate vertices: 18 and 20
。
そのため、さらに調査すると、ポリゴン内の 2 つのノードが近接している場合、または重複している場合に発生するようです。
次に、QGISでこのノードを手動で削除し、プロセスを再試行しましたが、同じ問題を持つ別のポリゴンがあることがわかりました。
ポリゴンの修正 > MongoDB へのアップロード > インデックスの作成のプロセス全体を繰り返さなくても、この問題を修正するにはどうすればよいですか? この問題が発生しているポリゴンの数を確認する方法はありますか?
node.js - 同じ Mongodb コレクション内の座標配列から GeoJson を作成する
mongodb コレクションを 2d から 2dsphere に変更したいと考えています。 db.users に次の構造があります。
私はこのようなものが欲しいです:
私はこれを試しました:
明らかに、文字通り「'interests.$.coordinates'」を挿入します。
そしてノードでこれを試しました:
しかし、座標は混合値で挿入されました。
考え?
ありがとう!!