我是MongoDB大学的新手,我想创建一个名为“ films”的表。
该表的数据不会一直更改,但是会被读取很多时间。
我的结构是这样的:
{
"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