即使GeoJSON有效,也无法提取地理密钥

时间:2015-03-22 18:44:44

标签: mongodb mongodb-query geojson

我在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?

1 个答案:

答案 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 })