私は、飛行するまで車両が都市/国を頻繁に変更することができないため、より良い解決策があると思います。私はあなたが車両位置データを取得するとき、私はちょうど保存された車両のドキュメントからcurr_cityをフェッチし、今{id, location_cordinates, curr_city, curr_country}
としての私の車のスキーマを選択します{id, name, boundary, near_city}.
のようなスキーマを持つことができ、国の内部schema-
Country={
id: ObjectId or String,
name: String,
cities: [<array of city subdocuments>],
near_country: [<array of IDs of neighbour countries>],
boundary: location boundary for city <city would be polygon or your choice of geoType>
}
市のサブドキュメントの下に検討していますし、場所がまだcurr_cityの中にあるかどうかを確認してください。問題がなければ、場所がnear_cityの中にあるかどうかを確認するだけです。
車両の動きによって都市や国が変化する場合は、最新のデータで車両を更新する必要があります。
このようにして、DBのクエリを最小限に抑えます。すべてがDBで行われないため、いくつかのコードが必要になります。
ここで私はいくつかの仮定をとっている車両のlike-
- 場所は、車両のドキュメントに保存されます。あなたのケースではない場合は、それを削除してください。あなたは、GPSなどの場所から場所を取得している可能性があり、必要に応じて格納する必要はありません。
- 交差部分を理解できませんでした。トランジションか交差か?通常、国には州があり、州には都市があります。都市名は、州の中または州をまたいで複製することができます。しかし、都市はただ一つの州の一部になるでしょう。そうでない場合は、同じ都市を複数の国に配置し、これらの都市を処理するためのコードロジックを入れるだけです。
- 都市に近づいている間、国境にあり、近くに都市があるかもしれない都市を考慮する必要があります。
私はあなたの問題を理解し、解決策があなたに役立つことを願っています。さらなる情報が得られればさらに助けてくれると嬉しいです。