在mLab上用猫鼬进行全文搜索:MongoError:$ text查询需要文本索引

时间:2019-07-16 12:27:45

标签: mongodb express mongoose mlab

我正在尝试对mLab上的数据库执行全文搜索。但是,显然没有创建文本索引。 猫鼬版本是5.4.16

模式:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var mySchema = new Schema({
  title: {
    type: String,
    trim: true,
    required: true
  },
  description: {
    type: String,
    trim: true
  }
});

mySchema.index({
  title: "text",
  description: "text",
});

mongoose.model("Model", mySchema);

module.exports = mongoose.model("Model");

使用以下内容进行搜索:

Model.find({
    $text: { $search: query }
  }).exec(function(err, codes) {...}```

我收到以下错误:

MongoError:$ text查询需要文本索引

1 个答案:

答案 0 :(得分:2)

我不知道为什么,但是我在Mongoose和Mlab上遇到了同样的问题。

我手动执行以下操作来解决它。

1)使用mongo shell连接到mlab

mongo ds245387.mlab.com:45387/<dbname> -u <dbuser> -p <dbpassword>

2)运行db.products.createIndex( { title: "text", "description": "text" } )

3)db.products.getIndexes()应该返回类似以下内容:

{
    "v" : 2,
    "key" : {
        "_fts" : "text",
        "_ftsx" : 1
    },
    "name" : "title_text_description_text",
    "ns" : "database-name.products",
    "weights" : {
        "description" : 1,
        "title" : 1
    },
    "default_language" : "english",
    "language_override" : "language",
    "textIndexVersion" : 3
}

注意:产品是您的收藏名称

4)再试一次您的查询!

MongoDB文本搜索reference