我需要在聚合框架中获得两个坐标之间的距离,但是只有我使用$ text的第一个匹配管道可以使用索引,我不能使用$ geoNear或$ text相同的匹配查询。 我解决了使用以下方法返回半径内坐标的问题:
{$geoWithin: {$centerSphere: [[lon, lat], (distance*1000)/6731]}}
但我无法弄清楚如何在不使用索引的情况下计算距离。
这是管道的前两个阶段
[
{ '$match': { '$text': { $search: "some text" } } },
{ '$match': { coordinate: {$geoWithin: {$centerSphere: [[lon, lat], (distance*1000)/6731]}}, type: 0 } }
]
通过向此管道添加$项目,可以返回[x,y]和[lon,lat]之间的距离吗?