当我们尝试搜索mongo cli时,我们无法获得正确的数据。这是完整的场景:
我们在集合中有以下JSON:
"_id" : 18348,
"Name" : "Applebee's Neighborhood Grill",
"AddressLine1" : "2545 Scottsville Rd, Bowling Green, KY - 42104, United States",
"loc" : {
"lng" : -86.42583465576172,
"lat" : 36.95203399658203
},
"ProfilePicturePath" : "",
"MarketID" : 92,
"TotalFavorites" : 0,
"PriceRating" : null,
"ProfileType" : "R",
"Cuisines" : [ ],
"Rating" : 4
当我们搜索我们同时提供地理查询和全文的地方时,我们得到的结果不正确。在这种情况下(下面)我改变了经度: db.rests.runCommand(“text”,{search:“Applebee's”,filter:{loc:{$ near:[ - 86.43113708496094,136.963356018066406],$ maxDistance:1/69}}})
我明白了:
{
"queryDebugString" : "applebe||||||",
"language" : "english",
"results" : [
{
"score" : 0.6666666666666666,
"obj" : {
"_id" : 18348,
"Name" : "Applebee's Neighborhood Grill",
"AddressLine1" : "2545 Scottsville Rd, Bowling Green, KY - 42104, United States",
"loc" : {
"lng" : -86.42583465576172,
"lat" : 36.95203399658203
},
"ProfilePicturePath" : "",
"MarketID" : 92,
"TotalFavorites" : 0,
"PriceRating" : null,
"ProfileType" : "R",
"Cuisines" : [ ],
"Rating" : 4
}
}
],
"stats" : {
"nscanned" : 1,
"nscannedObjects" : 1,
"n" : 1,
"nfound" : 1,
"timeMicros" : 92
},
"ok" : 1
}
我们尝试使用以下索引:
db.rests.ensureIndex( { "locs": "2d" } )
db.rests.ensureIndex({Name: "text",AddressLine1: "text"})
db.rests.ensureIndex({Name: "text",AddressLine1: "text"},{"loc":"2d"})
也许我们做错了什么?如果我们不使用Geo Filter并使用其他过滤器,如等级等,它的工作正常。
请帮助
阿米特
http://www.aquevix.com
答案 0 :(得分:0)
根据2.4 documentation,文本索引不适用于$ near:
注意您无法将需要特殊文本索引的text命令与需要不同类型的特殊索引的查询运算符组合在一起。例如,您无法将文本与$ near运算符组合。