MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongodb kiểm tra xem điểm có nằm trong đa giác không

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ệ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kiểu nhúng Golang + MongoDB (nhúng một cấu trúc vào một cấu trúc khác)

  2. Làm thế nào để cài đặt mongoDB trên Windows?

  3. MongoDB findOneAndDelete ()

  4. Các bước cài đặt MongoDB trên Amazon Linux

  5. mongoDB / mongoose:duy nhất nếu không phải null