MongoDB Near/GeoNear 使用数据库中的 MaxDistance 值
MongoDB Near/GeoNear with the MaxDistance value from Database
我想使用 MongoDB 做一些非常特别的事情,但还不知道该怎么做。
所以这里是:
到目前为止要查询附近的位置,MaxDistance 选项在查询中。
我想从数据库中的对象获取最大距离。
为了说明我想要什么,这里有一个小图形:
- 黑点是数据库中的点
- 彩色圆圈与每个点的不同距离
- 蓝点是查询中的点
- 在此示例中,由于蓝点匹配 2 个圆圈,因此应返回那 2 个(红色和绿色)...
虽然正常使用看起来更多(图形):
我不能只 raise/lessen BlueDot maxDistance,因为它可能匹配(或不匹配)某些(BlackDot + 他们自己的 MaxDistance),而它不应该匹配。
顺便说一下,我正在使用 Erlang...
知道吗,我怎样才能做到这一点,而不必从数据库中检索所有点并在我的软件中进行 GPS 数学运算?
显然可以使用聚合来完成:发现 here
pipeline : [
{
'$geoNear' : {
near : [
10,
10
],
distanceField : 'distance',
spherical : false,
uniqueDocs : true
}
},
{
'$project' : {
name : 1,
location : 1,
maximumDistance : 1,
delta : {
'$subtract' : [
'$maximumDistance',
'$distance'
]
}
}
},
{
'$match' : {
delta : { '$gte' : 0 }
}
}
]
我想使用 MongoDB 做一些非常特别的事情,但还不知道该怎么做。
所以这里是:
到目前为止要查询附近的位置,MaxDistance 选项在查询中。
我想从数据库中的对象获取最大距离。
为了说明我想要什么,这里有一个小图形:
- 黑点是数据库中的点
- 彩色圆圈与每个点的不同距离
- 蓝点是查询中的点
- 在此示例中,由于蓝点匹配 2 个圆圈,因此应返回那 2 个(红色和绿色)...
虽然正常使用看起来更多(图形):
我不能只 raise/lessen BlueDot maxDistance,因为它可能匹配(或不匹配)某些(BlackDot + 他们自己的 MaxDistance),而它不应该匹配。
顺便说一下,我正在使用 Erlang...
知道吗,我怎样才能做到这一点,而不必从数据库中检索所有点并在我的软件中进行 GPS 数学运算?
显然可以使用聚合来完成:发现 here
pipeline : [
{
'$geoNear' : {
near : [
10,
10
],
distanceField : 'distance',
spherical : false,
uniqueDocs : true
}
},
{
'$project' : {
name : 1,
location : 1,
maximumDistance : 1,
delta : {
'$subtract' : [
'$maximumDistance',
'$distance'
]
}
}
},
{
'$match' : {
delta : { '$gte' : 0 }
}
}
]