Node.js 错误:未启用文本搜索:-在mongodb中
我得到以下错误:-Node.js 错误:未启用文本搜索:-在mongodb中,node.js,mongodb,mongoose,mongoose-plugins,Node.js,Mongodb,Mongoose,Mongoose Plugins,我得到以下错误:- [Error: text search not enabled] 我正在运行folliough函数,它本质上是一个mongoose mongodb操作 var textSearch = require('mongoose-text-search'); exports.dbTextSearch = function () { console.log('dbTextSearch'); var gameSchema = mongoose.Schema({
[Error: text search not enabled]
我正在运行folliough函数,它本质上是一个mongoose mongodb操作
var textSearch = require('mongoose-text-search');
exports.dbTextSearch = function () {
console.log('dbTextSearch');
var gameSchema = mongoose.Schema({
name: String
, tags: [String]
, likes: Number
, created: Date
});
gameSchema.plugin(textSearch);
gameSchema.index({ tags: 'text' });
var Game = mongoose.model('Game', gameSchema);
Game.create({ name: 'Super Mario 64', tags: ['nintendo', 'mario', '3d'] }, function (err) {
Game.textSearch('3d', function (err, output) {
if (err) return console.log(err); // this outputs the error.
var inspect = require('util').inspect;
console.log(inspect(output, { depth: null }));
});
});
}
我正在尝试实现插件MongoDB文本搜索仍然是一项实验性功能。这就是为什么它在默认情况下是禁用的。您可以通过使用命令行参数启动mongod--setParameter textSearchEnabled=true或将行textSearchEnabled=true
添加到文件mongodb.conf中来实现
请注意,作为一项实验性功能,文本搜索还不应该在生产环境中使用
更新
从版本
2.6
起,mongoDB文本搜索功能具有生产质量并自动启用。在mongoDB 2.4中-要启用实验文本搜索,请使用
setParameter=textSearchEnabled=true
以下行在mongodb.conf文件中对我不起作用
textSearchEnabled=true
编辑在MongoDB 2.6+中默认启用。您只需要设置文本索引 启动mongo时,必须指定此启动参数(在上述答案中提到)。因此,如果手动启动,请使用:
mongod --setParameter textSearchEnabled=true
否则,如果mongo是deamonized,则将其放入deamon脚本中。大概是这样的:
start()
{
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" $NUMACTL $mongod --setParameter textSearchEnabled=true $OPTIONS
然后创建文本索引并检查其存在性:
db.mycoll.createIndex( { someFieldName: "text" } );
db.mycoll.getIndexes()
如果搜索该错误字符串,很容易找到最可能的原因。我将MongoDB升级到2.6,但仍然得到“MongoError:文本搜索未启用”。有没有办法检查textSearchEnabled是真是假?。也许这就是它显示为未启用的原因。不知道你怎么查。TextSearch的工作方式有所不同(从2.6开始),在2.4中,
$text
操作员返回多个文档,而不是text
只返回一个文档。另外,在mongoshell中检查您的版本()。