геопространственный запрос mongoDB не работает - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь извлечь все элементы внутри многоугольника (обычный или неправильный), но геопространственная 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 голосов
/ 19 октября 2018

Это правильный ответ, сначала сбросьте поле coordinates_geojson.deviation_level, а затем создайте индекс db.collection.createIndex({"coordinates_geojson" : "2dsphere" }).
Спасибо @ B.Fleming

...