我在c#中使用MongoDB。要搜索“知识”集合中的“问题”,这是我的代码。
var collection = _database.GetCollection<BsonDocument>("knowledge");
var filter = Builders<BsonDocument>.Filter.Eq("question", question);
var results = await collection.Find(filter).ToListAsync();
而不是这个我想搜索包含给定单词的'问题'。我想在MongoDB中搜索一个简单的模式。
db.stores.find( { $text: { $search: "java \"coffee shop\"" } } )
我在堆栈中发现了这个。
collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject));
collection.Find(Builders<searchFileByAuthor>.Filter.Text("coffe")).ToList();
Full text search in mongodb in .net
我不熟悉在c#中使用MongoDB。我应该如何修改我的代码来创建文本索引并搜索模式?如何在MongoDB .NET驱动程序版本2.4.4中执行此操作?
答案 0 :(得分:3)
要创建搜索模式,您可以使用“正则表达式”构建器。在描述字段中匹配“java”或“coffee shop”的示例:
var collection = _database.GetCollection<BsonDocument>("knowledge");
var builder = Builders<BsonDocument>.Filter;
var filter = builder.Regex("description", "(java)") | builder.Regex("description", "(coffee shop)");
var result = collection.Find(filter).ToList();
答案 1 :(得分:1)
您可以使用全文搜索
Collection.Indexes.CreateOne(new CreateIndexModel<T>(Builders<T>.IndexKeys.Text("$**")));
//构建过滤器并进行查询
var key = txtSearchKey.Text.ToLower().Trim();
var filter = Builders<EntityObject>.Filter.Text(key);