我在MongoDB中有一个带有2dsphere索引的集合。我想保存的对象如下所示:
{
"type" : "Polygon",
"coordinates" : [
[
[
5.052617929724351,
52.64653192570052
],
[
5.051738165167465,
52.64765805672784
],
[
5.054162882116928,
52.64831549553909
],
[
5.054592035559312,
52.64780777138566
],
[
5.055364511755601,
52.64790541110375
],
[
5.056094072607651,
52.64688343792051
],
[
5.054237983969346,
52.64661654927096
],
[
5.052617929724351,
52.64653192570052
]
]
]
}
根据http://geojsonlint.com/,这是完全有效的GeoJSON。但MongoDB表示它无法提取地理密钥,因为GeoJSON可能格式不正确。
任何人都可以帮我解决错误吗?
这是我得到的MongoDB错误:
insertDocument :: caused by :: 16755 Can't extract geo keys from object, malformed geometry?
答案 0 :(得分:2)
问题是您没有提供将GeoJSON分配给的顶级对象的名称。
您必须在“坐标”字段上创建“2dsphere”索引。相反,您希望在将分配整个GeoJSON值的字段上创建它。
db.geo.createIndex({"location":"2dsphere"})
db.geo.insert({"location" : {
"type" : "Polygon",
"coordinates" : [
[ <list of your-coord-pairs> ]
]
}})
WriteResult({ "nInserted" : 1 })