Поиск по Монго не работает по ключевым словам - PullRequest
0 голосов
/ 02 декабря 2011
{
   "_id": ObjectId("4ed8d496c605da94400001e4"),
   "status": 1,
   "user": {
     "uid": 1 
  },
   "nid": 10582,
   "form": {
     "your-name": "Bob Smith",
     "description": "",
     "photo": "",
     "address": "123 Turk Hill Rd",
     "city": "",
     "zip": "14450" 
  },
   "location": {
     "address": "123 Turk Hill Rd",
     "city": "",
     "zip": "14450",
     "geo_lat": 43.0329181,
     "geo_lng": -77.4391148,
     "address_confirmed": "123 Turk Hill Rd, Victor, NY 14564, USA",
     "address_status": 200,
     "accuracy": 8 
  },
   "keywords": {
     "0": "bob",
     "1": "smith",
     "2": "",
     "4": "123",
     "5": "turk",
     "6": "hill",
     "7": "rd",
     "9": "14450" 
  },
   "time": ISODate("2011-12-02T13: 37: 26.0Z") 

Поиск:

{
    nid: 10582,
    keywords: {"$in": ['turk']}             
}

Результаты: нет!

Что я делаю не так?

1 Ответ

3 голосов
/ 02 декабря 2011

Ответ прост: из-за ключевых слов это не массив.Для поиска по ключевым словам необходимо изменить структуру документа следующим образом:

{
...
"keywords": [
     "bob",
     "smith",
     "123",
     "turk",
     "hill",
     "rd",
     "14450" 
  ],
...
}

Обычно это происходит, когда вы из драйвера сериализуете словарь.В настоящий момент нет возможности искать в такой структуре.Простое использование массивов вместо словарей.Или вы можете преобразовать словарь в массив перед сериализацией документа и наоборот при десериализации документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...