2017-05-31 64 views
0

我正在开发移动应用的后端。移动应用可以开始/停止GPS跟踪,所以最后我们有一些Route对象。他们每10-30秒(也许经常)发送他们的GPS坐标(lng/lat)到服务器。问题是:在mongo中存储这个坐标的最好方法是什么?在MongoDB中存储路由

例如,我可以将它们存储为GeoJson LineString但是如果路线太长会怎么样?据我所知,文件最大尺寸为16 Mb。我可以使用一些更新查询动态更新这个对象吗?我的意思是每次应用程序发送新的点时,只需将它添加到最终,而不需要从数据库中获取所有对象,并添加新的点并保存即可。

也许将每个点存储为文档都有意义吗?

+0

16Mb就够了,你不觉得吗? – lnaie

回答

0

您可以使用$push追加到您的地理坐标,即

db.collection.update({'_id': 'foo'}, {'$push': {'geo_field.coordinates': [999,999]}}) 

至于16 MB的文件大小限制,如果你觉得你能超越它,你有一些其他的选择:

  • 店坐标为geopoint(s),并使用其他字段对行进行分组
  • 使用'$ each'和'$ slice'的组合将数组大小限制为最后n个元素,例如here
0

您可能想要看看geodna,也许存储起始坐标的地理数据和路线中其余点的增量值。