Geospatial Command chỉ bao gồm một lệnh, đó là Tìm kiếm địa lý. Nó được sử dụng để thực hiện một truy vấn không gian địa lý sử dụng chức năng chỉ mục haystack của MongoDB.
Các bài viết liên quan:
Haystack index: Nó tăng tìm kiếm bằng cách tạo các nhóm đối tượng được nhóm theo tiêu chí thứ hai.
Tìm hiểu về Geospatial Command trong MongoDB
Geospatial Command trong MongoDB là một tập hợp các câu lệnh và toán tử được cung cấp bởi MongoDB để làm việc với dữ liệu không gian. Được thiết kế đặc biệt cho các ứng dụng địa lý và không gian, Geospatial Command cho phép truy vấn, lọc và tính toán dữ liệu dựa trên vị trí địa lý.
Các Geospatial Command trong MongoDB bao gồm:
- $geoNear: Truy vấn các văn bản gần một điểm địa lý cụ thể.
- $geoWithin: Truy vấn các văn bản nằm trong một vùng địa lý cụ thể.
- $geoIntersects: Truy vấn các văn bản giao cắt với một đối tượng địa lý cụ thể.
- $near: Truy vấn các văn bản gần một điểm địa lý cụ thể trong một khoảng cách xác định.
- $nearSphere: Truy vấn các văn bản gần một điểm địa lý cụ thể trên mặt cầu.
Để sử dụng Geospatial Command trong MongoDB, ta cần sử dụng các toán tử và cú pháp tương ứng trong các truy vấn. Các toán tử này giúp xác định các điều kiện không gian cho truy vấn và lọc dữ liệu dựa trên vị trí địa lý.
Việc sử dụng Geospatial Command trong MongoDB giúp chúng ta tạo các truy vấn phức tạp dựa trên vị trí địa lý, tìm kiếm các đối tượng trong một vùng không gian xác định, tính toán khoảng cách giữa các điểm, và nhiều hơn nữa. Điều này rất hữu ích trong các ứng dụng địa lý, bản đồ, tìm kiếm địa điểm, quảng cáo địa lý và các lĩnh vực liên quan khác.
Tìm hiểu và sử dụng Geospatial Command trong MongoDB giúp ta mở rộng khả năng lưu trữ và truy vấn dữ liệu không gian, tạo ra các ứng dụng mạnh mẽ dựa trên vị trí địa lý và mang lại giá trị cho việc phân tích dữ liệu và ra quyết định dựa trên khía cạnh không gian.
Xem thêm Replication Command trong MongoDB
Lệnh MongoDB geoSearch
Lệnh geoSerach được tải với một giao diện có thể được sử dụng bởi chức năng chỉ mục haystack của MongoDB. Nó được sử dụng để trả về kết quả dựa trên vị trí sau khi thu thập kết quả dựa trên một số truy vấn khác nhau, chẳng hạn như haystack.
Cú pháp:
db.runCommand({ geoSearch : "read", near: [ -73.9667, 40.78 ], maxDistance : 6, search : { type : "tutorial" }, limit : 30 })
Nó chấp nhận tài liệu chứa các trường sau:
Field | Type | Description |
geoSearch | string | Đây là tên của tập hợp mà bạn muốn thực hiện geoSearch. |
search | document | Đây là truy vấn được sử dụng để lọc tài liệu. |
near | array | Đây là tọa độ của điểm mà chúng ta muốn thực hiện tìm kiếm địa lý. |
maxDistance | number | Chúng ta có thể xác định khoảng cách tối đa đến nơi chúng ta muốn thực hiện tìm kiếm. |
Limit | number | Chúng tôi có thể giới hạn số lượng tài liệu tối đa mà nó sẽ trả về. |
readConcern | document | Chúng ta có thể chỉ định mối quan tâm đọc bằng cú pháp sau; readConcern: { level: <value> } Mức độ quan tâm có thể đọc là: “local”: Đây là mức quan tâm đọc mặc định cho thao tác đọc. “available”: Nó trả về dữ liệu gần đây nhất. “majority”: Nó được sử dụng bởi các tập hợp bản sao sử dụng công cụ lưu trữ wiredTiger. “linearizable”: Nó được sử dụng cho các hoạt động đọc. |
Ví dụ
Hãy lấy ví dụ về vị trí bộ sưu tập:
db.runCommand( { geoSearch : "location", near: [ -73.96466, 40.78546 ], maxDistance : 8, search : { type : "book store" }, limit : 50 })
Lệnh trên trả về tất cả các tài liệu có loại kho sách có khoảng cách tối đa 8 đơn vị tính từ tọa độ [-73.96466, 40.78546] trong vị trí tập hợp lên đến tối đa 50 kết quả.
Ghi đè Default Read Concern
Chúng tôi có thể sử dụng tùy chọn mối quan tâm đọc để ghi đè mức độ quan tâm đọc mặc định.
Ví dụ:
db.runCommand( { geoSearch: "places", near: [ -73.9667, 40.78 ], search : { type : "book store" }, readConcern: { level: "majority" } } )
Ví dụ Các câu lệnh Geospatial Command trong MongoDB
Trong MongoDB, có một số câu lệnh Geospatial Command để làm việc với dữ liệu không gian. Dưới đây là một số câu lệnh phổ biến:
- $geoNear: Tìm các văn bản gần một điểm địa lý cụ thể và sắp xếp theo khoảng cách. Ví dụ:
db.collection.aggregate([ { $geoNear: { near: { type: "Point", coordinates: [longitude, latitude] }, distanceField: "distance", spherical: true } } ])
- $geoWithin: Tìm các văn bản nằm trong một vùng địa lý cụ thể. Ví dụ:
db.collection.find({ location: { $geoWithin: { $geometry: { type: "Polygon", coordinates: [[ [longitude1, latitude1], [longitude2, latitude2], [longitude3, latitude3], [longitude1, latitude1] ]] } } } })
- $geoIntersects: Tìm các văn bản giao cắt với một đối tượng địa lý cụ thể. Ví dụ:
db.collection.find({ location: { $geoIntersects: { $geometry: { type: "Point", coordinates: [longitude, latitude] } } } })
- $near: Tìm các văn bản gần một điểm địa lý cụ thể trong một khoảng cách xác định. Ví dụ:
db.collection.find({ location: { $near: { $geometry: { type: "Point", coordinates: [longitude, latitude] }, $maxDistance: distance } } })
- $nearSphere: Tìm các văn bản gần một điểm địa lý cụ thể trên mặt cầu. Ví dụ:
db.collection.find({ location: { $nearSphere: { $geometry: { type: "Point", coordinates: [longitude, latitude] }, $maxDistance: distance } } })
Lưu ý rằng các câu lệnh trên chỉ là ví dụ và cú pháp chi tiết có thể thay đổi tùy thuộc vào cấu trúc dữ liệu và yêu cầu của bạn. Để sử dụng các câu lệnh Geospatial Command này, bạn cần có dữ liệu có trường địa lý hoặc chỉ mục địa lý trên trường tương ứng trong MongoDB.
Xem thêm Giao thức Mạng trong TCP/IP
Sử dụng Geospatial Command để thao tác dữ liệu không gian trong MongoDB
Để thao tác dữ liệu không gian trong MongoDB bằng Geospatial Command, bạn cần làm các bước sau:
- Đảm bảo rằng dữ liệu của bạn có trường chứa thông tin địa lý hoặc đã tạo chỉ mục địa lý trên trường đó trong MongoDB. Điều này giúp MongoDB hiểu và tìm kiếm dữ liệu không gian dựa trên thông tin địa lý.
- Sử dụng các câu lệnh Geospatial Command để thực hiện các thao tác dữ liệu không gian. Ví dụ:
- Tìm các văn bản gần một điểm địa lý cụ thể và sắp xếp theo khoảng cách:
db.collection.aggregate([ { $geoNear: { near: { type: "Point", coordinates: [longitude, latitude] }, distanceField: "distance", spherical: true } } ])
- Tìm các văn bản nằm trong một vùng địa lý cụ thể:
db.collection.find({ location: { $geoWithin: { $geometry: { type: "Polygon", coordinates: [[ [longitude1, latitude1], [longitude2, latitude2], [longitude3, latitude3], [longitude1, latitude1] ]] } } } })
- Tìm các văn bản giao cắt với một đối tượng địa lý cụ thể:
db.collection.find({ location: { $geoIntersects: { $geometry: { type: "Point", coordinates: [longitude, latitude] } } } })
- Và các câu lệnh khác như $near, $nearSphere để tìm kiếm các văn bản gần một điểm địa lý cụ thể.
Lưu ý rằng cú pháp chi tiết và các tham số có thể thay đổi tùy thuộc vào cấu trúc dữ liệu và yêu cầu của bạn. Hãy tìm hiểu thêm về các câu lệnh Geospatial Command và điều chỉnh chúng để phù hợp với nhu cầu của bạn trong việc thao tác dữ liệu không gian trong MongoDB.