2012-04-21 2 views
0

Я ищуКак добавить LIKE параметр в MongoDB команде geoNear

db.runCommand ({ geoNear: "пользователей", вблизи: [56,11], maxDistance: 100/6387, distanceMultiplier: 6387, запрос: { "город":/^ BOS /} })

так вот я пытаюсь получить результаты с расстояния (приоритет) & название города, который начинается с BOS

, как мы делаем LIKE запрос запроса в mys ql so Я не могу получить результаты.

Скажите, пожалуйста, как я могу это сделать?

ответ

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

Будем надеяться, что выше будет решить эту проблему и позволит вам выполнить правильный запрос.

Смежные вопросы