Mongodb$near、$geointen和$text

Mongodb$near、$geointen和$text,mongodb,geospatial,Mongodb,Geospatial,最初,我想支持mongo db文本搜索,支持geo$near功能。后来意识到这两者不能一起使用,因为两者都需要索引 后来我决定改用$geoinsin。但是,结果并不像$near那样按距离排序 我想知道是否有任何方法可以将$geointen返回的结果按“距离”排序 $geointen运算符不返回排序结果。因此,MongoDB可以比对结果进行排序的地理空间$near或$nearSphere查询更快地返回$geointer查询。因此,简而言之,使用$near或$nearSphere可以获得排序结果。见

最初,我想支持mongo db文本搜索,支持geo
$near
功能。后来意识到这两者不能一起使用,因为两者都需要索引

后来我决定改用
$geoinsin
。但是,结果并不像
$near
那样按距离排序


我想知道是否有任何方法可以将
$geointen
返回的结果按“距离”排序

$geointen
运算符不返回排序结果。因此,MongoDB可以比对结果进行排序的地理空间
$near
$nearSphere
查询更快地返回
$geointer
查询。因此,简而言之,使用
$near
$nearSphere
可以获得排序结果。见:


$geointen
运算符不返回排序结果。因此,MongoDB可以比对结果进行排序的地理空间$near或
$nearSphere查询更快地返回
$geoWithin
查询


同意你的看法,但是我应该能够使用全文搜索功能,因此我不能将$near或$nearSphere与$text一起使用。Doc说:您不能将$near运算符(需要特殊的地理空间索引)与需要其他特殊索引的查询运算符或命令组合使用。例如,您不能将$near与$text query.db.places.aggregate([{$geoNear:{near:{type:“Point”,坐标:[-73.99279,40.719296]})组合,distance字段:“dist.computed”,maxDistance:2,查询:{type:“public”},includeLocs:“dist.location”,num:5,sphere:true}}])尝试使用它。为了包含距离,似乎必须使用聚合框架,而不是查找:请参考这篇文章,这只是手册页面中的直接引用,实际上没有注意到它是引用。这不是回答,你不能。这也没有任何意义。像
$near
$text
这样的操作符基本上都是为了“找到我所要求的最接近的东西”,无论是在地理位置上,还是在相关性输入的术语上。由于许多原因,这些不能在一个查询中一起使用,最显著的原因是引擎处理它们的方式不同。但这通常没有多大意义,你真的想要一个或另一个
$geoinsin
当然不会排序,这是出于设计。在相关的。另一种方法是分别运行每个查询并合并结果。但很可能你应该重新评估你认为这对你有什么好处。你的详细解释帮助我清楚地理解了这些概念。非常感谢您花时间回答。。