MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongodb проверява дали точката е в многоъгълник

Изглежда, че е свързано с поръчката. Ако използвате $geoWithin и се опитвате да намерите точки вътре в многоъгълник, нещото, което е вътре, е полето, в което търсите. Въпреки това, $geoIntersects работи в двете посоки, така че можете да търсите точки вътре в многоъгълници или полигони, съдържащи точки, напр.:

db.geom.insert({
  "polygons": {
    "type":"Polygon",
    "coordinates": [[
      [ 17.60083012593064, 78.18557739257812],
      [ 17.16834652544664, 78.19381713867188],
      [ 17.17490690610013, 78.739013671875],
      [ 17.613919673106714, 78.73489379882812],
      [ 17.60083012593064, 78.18557739257812]
    ]]
  }
});

db.geom.find({
  polygons: {
    $geoIntersects: {
      $geometry: {
        "type": "Point",
        "coordinates": [17.3734, 78.4738]
      }
    }
  }
});

Също така имайте предвид, че трябва да повторите първата точка на многоъгълника в края. Ако премахнете последната двойка, ще получите $err :

Заявката не може да се канонизира:грешка на лошата гео заявка с лоша стойност.

Изглежда, че MongoDB ви позволява да вмъквате невалидни геометрии и се оплаква само когато се опитате да добавите индекс на 2dsphere или направите заявка за пресичане/в рамките на/близо, което, предполагам, е разумно, тъй като GeoJSON може да бъде валиден JSON, без да е валидна геометрия.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Рамка за агрегиране:Вземете документ с последна дата за идентификатор на групиране

  2. Как да получа достъп до MongoDB на Meteor от друг клиент, докато Meteor работи?

  3. Mongod се оплаква, че няма папка /data/db

  4. GridFS в Spring Data MongoDB

  5. MongoDB $push срещу $addToSet:Каква е разликата?