0

我正在寻找

db.runCommand({ geoNear: "users", near:[56,11], maxDistance:100/6387, distanceMultiplier:6387, query: { "city": /^bos/} })

所以在这里我试图获得以 bos 开头的距离(优先级)和城市名称的结果

因为我们在 mysql 中进行 LIKE 查询调用,所以我无法获得结果。

请告诉我我该怎么做?

4

1 回答 1

1

将“查询”参数添加到命令中应该会为您提供您正在寻找的结果。

您的查询可能不起作用的一个可能原因是正则表达式区分大小写,除非使用“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

希望以上内容可以解决您的问题并允许您执行正确的查询。

于 2012-04-23T17:35:30.083 回答