如何在mongodb geoNear命令中添加LIKE参数

时间:2012-04-21 07:52:31

标签: mongodb mongodb-php

我正在搜索

db.runCommand({     geoNear:“用户”,     近:[56,11],     maxDistance:6387分之100,     distanceMultiplier:6387,     查询:{“city”:/ ^ bos /} })

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

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

请告诉我该怎么做?

1 个答案:

答案 0 :(得分:1)

在命令中添加“query”参数可以为您提供所需的结果。

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

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