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.