$ geoWithin给出“未知的GeoJSON类型”错误

时间:2016-11-26 23:07:25

标签: mongodb

我正在尝试为我的一个班级学习MongoDB并使用拉链数据集(http://media.mongodb.org/zips.json),我试图在这些点内找到拉链:[ - 80,30],[ - 90,30] ,[ - 90,40]和[-80,40]。

在引用文档here

之后

我提出了这个问题:

 db.zips.find({loc: {$geoWithin : {$geometry : {type : "polygon", coordinates : [[[-80, 30], [-90, 30], [-90, 40], [-80, 40], [-80, 30]]]}}}})

我认为它会起作用,但我收到以下错误:

Error: error: {
    "waitedMS" : NumberLong(0),
    "ok" : 0,
    "errmsg" : "unknown GeoJSON type: { type: \"polygon\", coordinates: [ [ [ -80.0, 30.0 ], [ -90.0, 30.0 ], [ -90.0, 40.0 ], [ -80.0, 40.0 ], [ -80.0, 30.0 ] ] ] }",
    "code" : 2
}

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

似乎您使用了错误的地理位置类型,应该Polygon尝试:

db.zips.find({
  loc: {
    $geoWithin: {
      $geometry: {
        type: "Polygon",
        coordinates: [
          [
            [
              -80, 30
            ],
            [
              -90, 30
            ],
            [
              -90, 40
            ],
            [
              -80, 40
            ],
            [-80, 30]
          ]
        ]
      }
    }
  }
})