如何在MongoDB 2.4.x中存储其他数据,使其符合geoJSON格式

时间:2016-11-25 09:28:04

标签: mongodb geolocation geojson

我有一个数据库集合,它遵循地理点位置的geoJSON格式。这允许我使用d3.js轻松地从数据库中提取数据以供显示。如果地理参考点包含自己的数据集,那么存储此信息的最佳方式是什么,以使其符合geoJSON格式并允许MongoDB 2.4.x 2dsphere查询?

以下是geoJSON documentation

的示例
{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [123456, 234567]
  },
  "properties": {
    "arrivalTime": 12345678,
    "departureTime": 23456789
  }
}

假设在这个特定点我有一个附加信息矩阵,其中每个矩阵条目由值对x,y,z给出。例如,如果xy是1x10向量,则z是10x10矩阵。我需要存储此类信息,但我不想放弃在MongoDB 2.4.x中使用2dsphere查询的能力,我希望我的数据库集合符合geoJSON以便其他诸如d3.js之类的库能够毫无损失地进行交互。

1 个答案:

答案 0 :(得分:0)

您可以将GeoJSON对象放在文档中的字段中。例如,如果某个位置具有与您的示例类似的GeoJSON对象,则可以将此文档嵌入到封装有关此位置的所有信息的文档中,例如:

{
  "_id": ObjectId(...),
  "geo": <GeoJSON object>,
  "meta": {
    "x": [1x10 vector],
    "y": [1x10 vector],
    "z": [10x10 matrix],
    "other": <other relevant meta information>
  }
}

您仍然可以通过指定子文档来索引MongoDB中的地理位置:

> db.geo.createIndex({'geo.geometry': '2dsphere'})

请注意,2.4不再受支持,并且2.6及以上的2dsphere索引有重大改进,其中包括索引更多GeoJSON类型的功能(参见https://docs.mongodb.com/v3.2/core/2dsphere/#dsphere-version-2)。最新的MongoDB版本目前是3.4.0。