Mongo 获取指定位置 10 英里内的所有文件
Posted
技术标签:
【中文标题】Mongo 获取指定位置 10 英里内的所有文件【英文标题】:Mongo Get all the documents within 10 miles of location specified 【发布时间】:2016-07-06 09:54:43 【问题描述】:我有 2 个收集服务提供者和父母。
ServiceProvider(_id, ServiceProviderID, ...)
父母(_id,ID,位置:[纬度,经度],...)
ServiceProvider 集合的ServiceProviderID 链接到Parents 集合的ID。
我想要位置 10 英里范围内的所有服务提供商。
所以基本上我想加入ServiceProvider和Parents集合并列出10英里范围内的所有ServiceProvider。
我尝试了以下查询:
db.ServiceProvider.aggregate([
$lookup:
from: "Parents",
localField: "ServiceProviderID",
foreignField: "ID",
as: "ServiceProviderArr"
,
$match: "ServiceProviderArr": $ne: []
])
它给了我以下结果:
"_id" : ObjectId("577cc2ce588aec59178b4567"),
...
"ServiceProviderArr" : [
"_id" : ObjectId("577cbe33588aecf6168b45c6"),
"ID" : "193",
...
"Location" :
"Lat" : "40.75368539999999",
"Long" : "-73.9991637"
]
【问题讨论】:
我的回答解决了你的问题吗? @SergiuZaharie 是的,您的回答确实很有帮助。谢谢! 【参考方案1】:如果我理解得很好,这个查询可能就是你需要的:
db.Parents.aggregate([
$geoNear:
near: type: "Point", coordinates: [ 0, 0 ] ,
spherical: true,
distanceField: "dist.calculatedd",
maxDistance: 10
,
$lookup:
from: "ServiceProvider",
localField: "ID",
foreignField: "ServiceProviderID",
as: "ServiceProviderArr"
]).pretty()
您需要相应地更改中心点坐标和最大距离
【讨论】:
以上是关于Mongo 获取指定位置 10 英里内的所有文件的主要内容,如果未能解决你的问题,请参考以下文章