我正在寻找
db.runCommand({ geoNear: "users", near:[56,11], maxDistance:100/6387, distanceMultiplier:6387, query: { "city": /^bos/} })
所以在这里我试图获得以 bos 开头的距离(优先级)和城市名称的结果
因为我们在 mysql 中进行 LIKE 查询调用,所以我无法获得结果。
请告诉我我该怎么做?
我正在寻找
db.runCommand({ geoNear: "users", near:[56,11], maxDistance:100/6387, distanceMultiplier:6387, query: { "city": /^bos/} })
所以在这里我试图获得以 bos 开头的距离(优先级)和城市名称的结果
因为我们在 mysql 中进行 LIKE 查询调用,所以我无法获得结果。
请告诉我我该怎么做?
将“查询”参数添加到命令中应该会为您提供您正在寻找的结果。
您的查询可能不起作用的一个可能原因是正则表达式区分大小写,除非使用“i”标志指定为不区分大小写。
例如:
> db.places.save({_id:1, city:"CityA", loc:[56.01,11.01]})
> db.places.save({_id:2, city:"CityB", loc:[56.02,11.02]})
> db.places.ensureIndex({loc:"2d"})
> db.runCommand({ geoNear: "places", near:[56,11], maxDistance:1, distanceMultiplier:1, query: { "city": /^city/} })
{
"ns" : "test.places",
"near" : "1100100000111111111100110000110000111111111100110000",
"results" : [ ],
"stats" : {
"time" : 0,
"btreelocs" : 0,
"nscanned" : 2,
"objectsLoaded" : 2,
"avgDistance" : NaN,
"maxDistance" : 0
},
"ok" : 1
}
什么都没有返回。现在命令重新运行,在查询的正则表达式部分使用不区分大小写的标志:
> db.runCommand({ geoNear: "places", near:[56,11], maxDistance:1, distanceMultiplier:1, query: { "city": /^city/i} })
{
"ns" : "test.places",
"near" : "1100100000111111111100110000110000111111111100110000",
"results" : [
{
"dis" : 0.014142135623729393,
"obj" : {
"_id" : 1,
"city" : "CityA",
"loc" : [
56.01,
11.01
]
}
},
{
"dis" : 0.02828427124746381,
"obj" : {
"_id" : 2,
"city" : "CityB",
"loc" : [
56.02,
11.02
]
}
}
],
"stats" : {
"time" : 0,
"btreelocs" : 0,
"nscanned" : 2,
"objectsLoaded" : 2,
"avgDistance" : 0.0212132034355966,
"maxDistance" : 0.028292673810819097
},
"ok" : 1
}
>
两个位置都返回。可以在“高级查询”页面的“正则表达式”部分找到有关在 Mongo 查询中使用正则表达式的文档: http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions
希望以上内容可以解决您的问题并允许您执行正确的查询。