2017-05-31 75 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,也許存儲起始座標的地理數據和路線中其餘點的增量值。