Вот модель «Класс», для которой я создал «текстовый» индекс для «ключевых слов», «lifeArea», «type».
Структура модели:
{
"_id" : ObjectId("558cf6e3387419850d892712"),
"keywords" : "rama,seetha",
"lifeArea" : [
"Emotional Wellness"
],
"type" : "Pre Recorded Class",
"description" : "ram description",
"synopsis" : "ram syn",
"name" : "ram demo",
"__v" : 0
}
db.Class.getIndexes()
// displaying index
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "classIndex",
"ns" : "innrme.classes",
"weights" : {
"keywords" : 1,
"lifeArea" : 1,
"type" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}
Я хочу, чтобы сделать поиск текста на полях, указанных выше. Я попробовал следующий запрос.
db.classes.find({$or:[{keywords: { $text: { $search: "rama abc" } } }, {type: {$text: { $search: "class" }}}],score: {$meta: 'textScore'}});
Но это не сработало, и я получил ошибку follwing
Error: error: {
"$err" : "Can't canonicalize query: BadValue unknown operator: $text",
"code" : 17287
}
Пожалуйста, помогите мне, чтобы получить правильный запрос. Пожалуйста, исправьте/просветите меня, если я ошибаюсь, задавая вопрос или объясняя проблему.