使用搜索索引时出错,我使用的是v3.4。
> 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 :(得分:1)
您可能已经为string
字段编制索引。要检查以前的索引,请运行此命令
db.test2.getIndexes();
如果存在,则可以通过该指令删除该索引
db.test2.dropIndex( { "string": 1 } );
之后,您可以再次为string
字段
db.test2.createIndex( { string: "text" } );
N.B:字段名称不应使用变量类型名称string
(尽管您未使用String
),Int