我正在做一个项目,其中我有许多车辆(大约2000辆)和几个多边形在我的DB (与mongo一起工作)。
我有不同种类的多边形(城市,国家,交叉口……),就这一点而言,我们假设有4种类型。
每分钟我都会得到车辆的新位置,我需要在客户端的一个表格上显示当前的国家、城市和交叉口(或最后一个交叉口)。我真正想知道的是车辆何时进入/离开多边形。
我知道可以查询车辆的特定位置的当前多边形,但我需要获取2000辆车辆的当前4种多边形类型。
这是8000(!)数据库每分钟的查询次数。
做我想做的事情最好的方法是什么?谢谢:)
发布于 2017-04-06 16:39:44
我认为有一个更好的解决方案,因为车辆在飞行之前不能频繁地改变他们的城市/国家。我正在考虑下面的方案-
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>
}country中的City子文档可以具有类似于{id, name, boundary, near_city}.的架构,我将选择我的车辆架构作为{id, location_cordinates, curr_city, curr_country}
现在,当您获得车辆位置数据时,只需从存储的车辆文档中获取curr_city,并检查location是否仍在curr_city中。如果没有问题,那么您只需要检查该位置是否在任何near_city中。
如果城市/国家/地区因车辆移动而更改,则需要使用最新数据更新车辆。
通过这种方式,您将最小化对DB的查询。这将需要一些代码,因为不是所有的事情都可以在DB中完成。
在这里,我做了一些假设,比如-
车辆的
希望我理解你的问题和解决方案对你有帮助。如果我得到进一步的信息,我将很乐意提供进一步的帮助。
https://stackoverflow.com/questions/43240860
复制相似问题