MongoDB按语言搜索文档

时间:2018-08-30 11:46:24

标签: mongodb

我是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

0 个答案:

没有答案