我在MongoDB中有一个集合,并且在一个文件上创建了一个索引,如下所示:
var indexOptions = new CreateIndexOptions();
var indexKeys = Builders<Book>.IndexKeys.Ascending(book=> book.title);
var indexModel = new CreateIndexModel<Book>(indexKeys, indexOptions);
collection.Indexes.CreateOneAsync(indexModel);
之后,我要在集合中搜索如下文本:
var filter = Builders<Book>.Filter.Text(textToSearch);
var result = collection.Find(filter).ToList(); // Error occurs here
但是我收到“命令查找失败:$ text查询需要文本索引。”最后一行错误。
更新:
我在mongo
命令行界面中手动创建了索引:
db.Book.createIndex({title:1})
但是没有用。
答案 0 :(得分:0)
您需要为Text Index创建Text operator才能工作,作为例外,您没有文本索引,因为您正在创建单个字段索引,请详细了解{{3 }}
要在代码中解决此问题,您将不得不替换
var indexKeys = Builders<Book>.IndexKeys.Ascending(book=> book.title);
与此
var indexKeys = Builders<Book>.IndexKeys.Text(book=> book.title);
也很高兴知道如何通过mongoshell创建此索引
db.Book.createIndex({title:"text"})