【问题标题】:How to store additional data in MongoDB 2.4.x such that it conforms to geoJSON formatting如何在 MongoDB 2.4.x 中存储附加数据以使其符合 geoJSON 格式
【发布时间】:2016-11-25 09:28:04
【问题描述】:

我有一个数据库集合,它遵循地理点位置的 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 能够毫无损失地进行交互。

【问题讨论】:

    标签: mongodb geolocation geojson


    【解决方案1】:

    您可以将 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。

    【讨论】:

    • 感谢您的意见。至于版本,我在 Raspbian Jessie 中使用 MongoDB,通过apt-get 提供的唯一版本是 2.4.x 版本。据我所知,最新版本的 MongoDB 在 ARM 上不受官方支持。一旦我转移到生产环境,我显然会升级。我只是想确保我没有在原型设计的早期就误伤自己。
    猜你喜欢
    • 2023-03-17
    • 2014-12-26
    • 2013-08-03
    • 2015-11-24
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多