簡體   English   中英

在 MongoDB 中搜索文本時 $text 查詢錯誤需要文本索引

[英]text index required for $text query error while search text in MongoDB

我在 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})

但它沒有用。

您需要為 文本運算符創建文本索引,作為例外情況,您沒有文本索引,因為您正在創建單字段索引,請閱讀mongodb 中有關索引類型的更多信息

要在您的代碼中解決這個問題,您必須替換它

var indexKeys = Builders<Book>.IndexKeys.Ascending(book=> book.title);

有了這個

var indexKeys = Builders<Book>.IndexKeys.Text(book=> book.title);

也很高興知道如何通過 mongoshell 創建這個索引

db.Book.createIndex({title:"text"})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM