我正在尝试对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查询需要文本索引
答案 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