2017-08-13 8 views
0

検索インデックスを使用するとエラーが発生します。私はv3.4を使用しています。mongoDB検索テキストエラー

> db.test2.insert({string:"aa bb cc"}); 
WriteResult({ "nInserted" : 1 }) 
> db.test2.insert({string:"aa 88 99"}); 
WriteResult({ "nInserted" : 1 }) 
> db.test2.ensureIndex({'string':"text"}); 


{ 
     "ok" : 0, 
     "errmsg" : "Index: { v: 2, key: { _fts: \"text\", _ftsx: 1 }, name: \"string_text\", ns: \"test2.test2\", weights: { string: 1 }, default_language: \"english\", language_override: \"language\", textIndexVersion: 3 } already exists with different options: { v: 2, key: { _fts: \"text\", _ftsx: 1 }, name: \"post_text_text\", ns: \"test2.test2\", weights: { post_text: 1 }, default_language: \"english\", language_override: \"language\", textIndexVersion: 3 }", 
     "code" : 85, 
     "codeName" : "IndexOptionsConflict" 
} 

答えて

0

あなたはstringフィールドにすでに率を有していてもよいです。あなたはstringフィールド

db.test2.createIndex({ string: "text" }); 

NBのために再度インデックスを作成することができた後に、この命令により、そのインデックスを削除することができ

db.test2.dropIndex({ "string": 1 }); 

を存在する場合、以前のインデックスをチェックするには、このコマンド

db.test2.getIndexes(); 

を実行します。フィールド名は、変数タイプ名string(ただし、Stringは使用しません)、Int

+0

実際にこのテキストインデックスを初めて設定します。私はあなたの方法を試して、それは "コード"を示しています:27、 "codeName": "IndexNotFound"。 85 "、" codeName ":" IndexOptionsConflict " –

+0

テキストで1つのインデックスのみを設定できるかどうか尋ねてもいいですか?私は他のキーのインデックステキストを前に設定しているので、それがそのインデックスに影響を与えるかどうかはわかりません。はいの場合は、すべてのインデックスを削除する方法を教えてもらえますか?私はテキストでインデックスを既に設定しているのを覚えていないからです。 –

+0

複数のテキストインデックスがあり、このコマンドですべてのインデックスを見ることができます 'db.test2.getIndexes();'このコレクションのすべてのインデックスを削除するには 'db.test2.dropIndex(" * ");'を使い、フィールドを変更してください'string 'を' data type'とは関係のないものに変更してください –