MongoDB.Текстовый индекс для индексирования и запроса документа с полем массива - PullRequest
0 голосов
/ 13 мая 2018

У меня есть коллекция "фильмов" со следующими полями:

_id Актеры Категория Описание Длина Рейтинг Длительность Аренда Стоимость замены Специальные функции Название

Актеры - это массив с тремя полями

"Имя" "Фамилия" "actorId"

Образцы документов из фильмов

{"_id":1,
"Actors":[{"Last name":"GUINESS",
"actorId":1,
"First name":"PENELOPE"},
{"First name":"CHRISTIAN",
"Last name":"GABLE",
"actorId":10},
{"First name":"LUCILLE",
"Last name":"TRACY",
"actorId":20},
{"actorId":30,
"First name":"SANDRA",
"Last name":"PECK"},
{"First name":"JOHNNY",
"Last name":"CAGE",
"actorId":40},
{"First name":"MENA",
"Last name":"TEMPLE",
"actorId":53},
{"First name":"WARREN",
"Last name":"NOLTE",
"actorId":108},
{"First name":"OPRAH",
"Last name":"KILMER",
"actorId":162},
{"First name":"ROCK",
"Last name":"DUKAKIS",
"actorId":188},
{"First name":"MARY",
"Last name":"KEITEL",
"actorId":198}],
"Category":"Documentary",
"Description":"A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies",
"Length":"86",
"Rating":"PG",
"Rental Duration":"6",
"Replacement Cost":"20.99",
"Special Features":"Deleted Scenes,
Behind the Scenes",
"Title":"ACADEMY DINOSAUR"}
{"_id":2,
"Actors":[{"First name":"BOB",
"Last name":"FAWCETT",
"actorId":19},
{"First name":"MINNIE",
"Last name":"ZELLWEGER",
"actorId":85},
{"First name":"SEAN",
"Last name":"GUINESS",
"actorId":90},
{"First name":"CHRIS",
"Last name":"DEPP",
"actorId":160}],
"Category":"Horror",
"Description":"A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China",
"Length":"48",
"Rating":"G",
"Rental Duration":"3",
"Replacement Cost":"12.99",
"Special Features":"Trailers,
Deleted Scenes",
"Title":"ACE GOLDFINGER"}

Я хочу 1 / создать текстовый указатель полей актеров вместе с "Категория"и «Описание» 2 /, чтобы найти имя или фамилию актера и найти его.

Я использовал это

db.films.createIndex(
   {
     Category: "text",
     Description: "text",
     "Actors.'First name'": "text",
     "Actors.'Last name'": "text"
   },
   {
     weights: {
       Category: 5,
       Description: 5,
       "Actors.'First name'":20,
       "Actors.'Last name'":20
     },
     name: "ix_text"
   }
 )

Когда я запрашиваю коллекцию

db.films.find( { $text: { $search: "SANDRA" } } ).pretty()

Я не получаю результата, хотя в массиве Actors существует «SANDRA»

Что не так?Мой индекс, мой запрос или оба?

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