mongoDB データベースでキーワード検索を実行しようとしています。mongoDB コンソールで:
db.logs.find({$text: {$search: 'key1'}})
正しい結果が得られます。しかし、nodejs コントローラーで mongoose-text-search を使用すると、エラーが発生します。これはスキーマの定義です:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var textSearch = require('mongoose-text-search');
var Log = new Schema({
keywords: [String],
description: String,
videoId: String,
logId: String,
date: Date,
robot: String
});
Log.plugin(textSearch);
Log.index({ keywords: 'text' });
module.exports = mongoose.model('log', Log);
コントローラーでは、特定の時点で次のことを行います。
Log.textSearch('key1', function(err,output) {
if (err){
res.send(500,err);
} else {
console.log(output);
}
});
応答は次のとおりです。
{"name":"MongoError","message":"no such command: text","ok":0,"errmsg":"no such command: text","code":59,"bad cmd":{"text":"logs","search":"key1"}}
さて、このメッセージだけでは、テキスト検索が機能していないと思われますが、前に示したとおりです。MongoDB シェル バージョン 3.0.2 を実行しているため、デフォルトでテキスト検索が有効になっています。