在MongoDB中存储路由

时间:2017-05-31 13:57:16

标签: mongodb geolocation geojson

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

例如,我可以将它们存储为GeoJson LineString,但如果路线太长会怎么样?据我记得,文档最大大小为16 Mb。我可以使用一些更新查询动态更新此对象吗?我的意思是,每当app发送新点时,只需将其添加到最后,而不是从db中添加所有对象并添加新点并保存。

将每个点存储为文档可能有意义吗?

2 个答案:

答案 0 :(得分:0)

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

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

对于16 MB的文档大小限制,如果您认为可以超过它,则还有其他选择:

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

答案 1 :(得分:0)

您可能希望查看geodna并且可能存储起始坐标的地理区域,并且只存储路线中其余点的增量。