2017-08-13 131 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

实际上它是我第一次设置这个文本索引。我试过你的方法,它显示“code”:27,“codeName”:“IndexNotFound”。虽然没有找到,我仍然得到这个错误信息,当我设置索引“代码”:85,“codeName”:“IndexOptionsConflict” –

+0

我可以问我是否可以只设置一个索引的文本?因为我之前设置了其他键的索引文本,不确定它是否会影响它。如果是的话,你能帮助告诉我如何删除所有索引?因为我不记得我设置的文字是什么索引。 –

+0

可能的多个文本索引,您可以通过此命令'db.test2.getIndexes();'查看所有索引,并使用'db.test2.dropIndex(“*”);'删除此集合的所有索引并更改字段名称'字符串'到另一个不涉及'数据类型' –