在 MongoDB 中存储路由
Posted
技术标签:
【中文标题】在 MongoDB 中存储路由【英文标题】:Storing a route in MongoDB 【发布时间】:2017-05-31 13:57:16 【问题描述】:我正在为移动应用开发一个后端。移动应用程序可以启动/停止 gps 跟踪,因此我们有某种 Route 对象。他们每 10-30 秒(可能经常)将他们的 gps 坐标(lng/lat)发送到服务器。问题是:将此坐标存储在 mongo 中的最佳方法是什么?
例如,我可以将它们存储为GeoJson LineString,但如果路线太长怎么办?据我记得,文档最大大小为 16 Mb。我可以使用一些更新查询动态更新这个对象吗?我的意思是每次应用程序发送新点时只需将其添加到末尾,而不需要从数据库中获取所有对象,将新点添加到它并保存。
也许将每个点都存储为文档有意义?
【问题讨论】:
16Mb 已经足够了,你不觉得吗? 【参考方案1】:您可以使用$push 附加到您的地理坐标,即
db.collection.update('_id': 'foo', '$push': 'geo_field.coordinates': [999,999])
至于 16 MB 的文档大小限制,如果您觉得可以超过它,您还有其他一些选择:
将坐标存储为geopoint(s) 并使用其他字段对您的线条进行分组 使用 '$each' 和 '$slice' 的组合将数组大小限制为最后 n 个元素,例如 here【讨论】:
【参考方案2】:您可能想查看geodna 并可能存储起始坐标的地理坐标,并且只存储路线中其余点的增量。
【讨论】:
以上是关于在 MongoDB 中存储路由的主要内容,如果未能解决你的问题,请参考以下文章