Mongooseで文字列の配列に対して全文検索を実行しようとしていますが、次のエラーが発生します。
{ [MongoError: text index required for $text query]
name: 'MongoError',
message: 'text index required for $text query',
waitedMS: 0,
ok: 0,
errmsg: 'text index required for $text query',
code: 27 }
ただし、ユーザースキーマのフィールドでテキストインデックスが宣言されており、mLabを使用しているため、テキストインデックスが作成されていることを確認しました。フィールドで全文検索を実行しようとしています
これが私のユーザースキーマです:
var userSchema = mongoose.Schema({
local: {
firstName: String,
lastName: String,
username: String,
password: String,
fields: {type: [String], index: true}
}
});
全文検索のマイコードは次のとおりです。
User.find({$text: {$search: search}}, function (err, results) {
if (err) {
console.log(err);
} else {
console.log(results);
}
});
ために $text
クエリが機能するため、mongodbはフィールドにテキストインデックスでインデックスを付ける必要があります。マングースでこのインデックスを作成するには
fields: {type: [String], text: true}
ここを参照 テキストインデックスのmongodbドキュメントについて。
以下のように、スキーマにテキストインデックスを追加する必要があります。
_userSchema.index({fields: 'text'});
_
または、すべての文字列フィールドを含める場合は、userSchema.index({'$**': 'text'});
を使用します