Nó dường như là để làm với đơn đặt hàng. Nếu bạn đang sử dụng $geoWithin
và bạn đang cố gắng tìm các điểm bên trong một đa giác, thứ nằm trong đó là trường bạn đang tìm kiếm. Tuy nhiên, $geoIntersects
hoạt động theo một trong hai hướng, vì vậy bạn có thể tìm kiếm các điểm bên trong đa giác hoặc đa giác có chứa điểm, ví dụ:
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]
}
}
}
});
Ngoài ra, lưu ý rằng, bạn cần lặp lại điểm đầu tiên của đa giác ở cuối. Nếu bạn xóa cặp cuối cùng, bạn sẽ nhận được $err
:
Không thể chuẩn hóa truy vấn:lỗi BadValue bad geo query ".
Có vẻ như MongoDB cho phép bạn chèn các hình không hợp lệ và chỉ phàn nàn khi bạn thử và thêm chỉ mục 2dsphere hoặc thực hiện truy vấn giao nhau / trong / gần, tôi cho là hợp lý vì GeoJSON có thể là JSON hợp lệ mà không phải là hình hợp lệ.