MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

mongodb periksa apakah titik dalam poligon

Tampaknya ada hubungannya dengan pesanan. Jika Anda menggunakan $geoWithin dan Anda mencoba menemukan titik di dalam poligon, hal yang ada di dalamnya adalah bidang yang Anda cari. Namun, $geoIntersects bekerja di kedua arah, sehingga Anda dapat mencari titik di dalam poligon, atau poligon yang berisi titik, misalnya:

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]
      }
    }
  }
});

Juga, perhatikan bahwa, Anda perlu mengulangi titik pertama poligon di akhir. Jika Anda menghapus pasangan terakhir, Anda akan mendapatkan $err :

Tidak dapat mengkanonikalisasi kueri:kesalahan BadValue bad geo query".

Tampaknya MongoDB memungkinkan Anda untuk memasukkan geometri yang tidak valid dan hanya mengeluh ketika Anda mencoba dan menambahkan indeks 2dsphere atau melakukan kueri berpotongan/dalam/dekat, yang menurut saya masuk akal, karena GeoJSON dapat menjadi JSON yang valid tanpa menjadi geometri yang valid.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menghapus catatan duplikat menggunakan MapReduce

  2. Membuat database di Mongo:tidak dapat terhubung, koneksi gagal

  3. MongoDB - Mengurutkan Hasil Kueri

  4. Bagaimana cara menginstal mongodb versi sebelumnya dengan homebrew?

  5. Fungsi Mongo Find() tidak akan mengecualikan _id