如何在 MongoDB 2.4.x 中存储附加数据以使其符合 geoJSON 格式
Posted
技术标签:
【中文标题】如何在 MongoDB 2.4.x 中存储附加数据以使其符合 geoJSON 格式【英文标题】:How to store additional data in MongoDB 2.4.x such that it conforms to geoJSON formatting 【发布时间】: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
给出。例如,如果 x
和 y
是 1x10 向量,则 z
是 10x10 矩阵。为此,我需要存储此类信息,但我不想失去在 MongoDB 2.4.x 中使用 2dsphere
查询的能力,并且我希望我的数据库集合符合 geoJSON,以便其他库(如 d3) .js 能够毫无损失地进行交互。
【问题讨论】:
【参考方案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 上不受官方支持。一旦我转移到生产环境,我显然会升级。我只是想确保我没有在原型设计的早期就误伤自己。以上是关于如何在 MongoDB 2.4.x 中存储附加数据以使其符合 geoJSON 格式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 将字符附加到 MongoDB 文档中的字符串
将项目附加到 PyMongo 中的 MongoDB 文档数组而不重新插入
在 MongoDB (rmongodb) 中附加 BSON 数组
在 MongoDB 中使用 $group 时如何在返回文档中获取附加字段?