问题描述
db.hotels.aggregate([
{
$search: {
index:'txtIdx',// this is the index name
text: {
query:"sun",path:['name','address.landmark','address.city','address.state','address.country'],fuzzy: {
maxEdits:2,prefixLength: 1,},{
$project: {
_id: 1,name: 1,address:1,score: { $Meta: "searchscore" }
}
},{$limit:100},])
hotels 集合中还有一个字段叫'location',其坐标如下
"location": {
"type": "Point","coordinates": [
72.867804,19.076033
]
}
我如何在此搜索查询中使用 geonear 以仅返回用户附近的酒店,并提供纬度、经度和距离。
我也试过这个查询
{
$search: {
index:'searchIndex',compound: {
must: {
text: {
query:'sun',fuzzy: {
maxEdits:2,prefixLength: 3,should: {
near:{
origin: {
type: 'Point',coordinates: [-122.45665489904827,37.75118012951178],pivot: 1000,path: 'location'
},}
}
}
},
但上面的查询返回的结果甚至不在该位置附近。它返回的结果与“搜索”在没有“附近”的情况下提供的结果相同。我已经为位置创建了“地理”索引,但它仍然没有返回附近的酒店。
或者除了使用 geonear 和搜索之外还有其他方法吗?我从过去 2 天开始一直在尝试,但我没有发现任何有用的东西。另外我只想使用模糊文本搜索。请告诉我是否有办法解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)