Я новичок в универсальном MongoDB, и я хочу создать таблицу под названием "фильмы".
Данные этой таблицы не будут постоянно меняться, но будут читаться много раз.
Моя структура такая:
{
"title" : "Hunger Games",
"language" : "french",
"summary" : "...",
"translation": [
{
"language" : "english",
"quote" : "aaaaa"
},
{
"language" : "spanish",
"quote" : "bbbbb"
}
],
"episodes" : [
{
"title" : "Hunger Games",
"language" : "english",
"summary" : "ccccc",
"translation": [
{
"language" : "french",
"quote" : "ddddd"
},
{
"language" : "spanish",
"quote" : "eeeee"
}
],
"release_date" : "1977-05-25T00:00:00Z",
"running_time" : 7260,
"year" : 1977,
"authors" : [
{
"name" : "Gary Ross"
}
],
"actors" : [
{
"name" : "Jennifer Lawrence"
}
],
"maturaty" : 13
}
],
"genre" : ["Sci-Fi", "..."]
}
индексы:
db.films.createIndex({
title: "text",
summary: "text",
"translation.quote": "text",
"episodes.title": "text",
"episodes.summary": "text",
"episodes.translation.quote": "text",
"episodes.authors.name": "text",
"episodes.actors.name": "text",
"genre": "text",
"episodes.release_date": 1
}, { default_language: "french", name: "IDX_Films" }
)
Когда я пытаюсь найти слово, например, "aaaaa" на французском языке, оно не возвращает результат, но на английском и испанском языках оно показывает, если я ищу "bbbbb", на каждом языке оно возвращает результат, то же самое для "ccccc" и "ddddd", но "eeeee" не возвращается по-французски.
У вас есть какое-нибудь решение, чтобы оно работало? Или вы знаете какой-либо поисковик, который отлично работает с MongoDB? Я знаю, что Elasticsearch - хорошая поисковая система, но я не знаю, будет ли это в моем случае.
Код:
db.films.find({$text: {$search: "aaaaa", $language: "english"}})
Спасибо
0ddlyoko