mongoDB地理空间查询不起作用

时间:2018-10-18 16:21:53

标签: mongodb geospatial mongodb-geospatial

我正在尝试提取多边形(规则或不规则)内的所有元素,但是mongoDB地理空间不起作用。

当我执行这样的查询时,效果很好

db.getCollection('houses').find({
  'coordinates_geojson.coordinates.1': {
        '$lte': 20.49584842128357,
        '$gte': 20.458539491985142
    },
    'coordinates_geojson.coordinates.0': {
        '$lte': -103.4088134765625,
        '$gte': -103.47747802734375
    }
})

但是如果尝试使用geoWithin进行查询,不会返回任何内容

db.getCollection('houses').find({
  "coordinates_geojson": {
    "$geoWithin": {
      "$geometry": {
        "type": "MultiPolygon",
        "coordinates": [
          [
            [
              [
                -103.47747802734375,
                20.458539491985142
              ],
              [
                -103.4088134765625,
                20.458539491985142
              ],
              [
                -103.4088134765625,
                20.49584842128357
              ],
              [
                -103.47747802734375,
                20.49584842128357
              ],
              [
                -103.47747802734375,
                20.458539491985142
              ]
            ]
          ]
        ]
      }
    }
  }
})

欢迎任何帮助或想法

1 个答案:

答案 0 :(得分:0)

那是正确的答案,首先取消设置字段coordinates_geojson.deviation_level,然后建立索引db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
谢谢@ B.Fleming