在MongoDB中,可以使用$geoNear
運算符和$geoWithin
運算符來進行距離范圍查詢。
$geoNear
運算符進行距離排序和篩選:db.collection.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [longitude, latitude] }, // 經度和緯度
distanceField: "distance", // 距離字段
maxDistance: maxDistance, // 最大距離
query: { /* 其他查詢條件 */ },
spherical: true // 使用球面幾何計算距離
}
}
])
$geoWithin
運算符進行范圍查詢:db.collection.find({
location: {
$geoWithin: {
$centerSphere: [
[longitude, latitude], // 經度和緯度
radius // 半徑
]
}
}
})
請注意,使用上述方法進行距離范圍查詢時,需要確保在集合中的地理位置字段使用了地理索引。可以使用createIndex()
方法來創建地理索引。
更多關于MongoDB地理查詢的信息,請參考官方文檔:https://docs.mongodb.com/manual/geospatial-queries/