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