我认为有一个更好的解决方案,因为车辆不能经常更改他们的城市/国家,直到他们飞行。我正在考虑以下内国家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>
}
市子文档可以有模式像{id, name, boundary, near_city}.
我会选择我的车辆架构为{id, location_cordinates, curr_city, curr_country}
现在,当你得到车辆位置数据,刚刚从存储车辆文档获取curr_city和检查位置是否仍在curr_city中。如果这没有问题,否则你只需要检查该位置是否在near_city内。
如果城市/国家由于车辆移动而改变,那么您需要使用最新数据更新车辆。
以这种方式,您将尽量减少对数据库的查询。这将需要一些代码,因为一切都不会在数据库中完成。
喜欢 - 车辆
- 位置在这里,我已经采取了一些假设将被存储的车辆文件内。如果不是你的情况,那就把它删除。您可能会从GPS或类似的东西获取位置,并且不需要根据您的需要进行存储。
- 我无法理解相交部分。它是过渡还是交叉?通常国家有州,州有城市等。城市名称可以在州内或州内复制。但是一个城市将成为唯一一个国家的一部分。如果情况并非如此,那么你只需要在多个国家放置同一个城市,并将代码逻辑放在这些城市中。
- 在靠近城市的同时,您需要考虑位于国家边界的城市,并且可能会从另一个国家/地区到达城市附近。
希望我明白你的问题和解决方案对你有帮助。如果获得更多信息,我会很乐意提供帮助。