C# MongoDb使用索引替代c通过正则表达式查找文档#
我有以下疑问C# MongoDb使用索引替代c通过正则表达式查找文档#,c#,regex,mongodb,mongodb-csharp-2.0,C#,Regex,Mongodb,Mongodb Csharp 2.0,我有以下疑问 query = query & Builders<Profile>.Filter.And(query, Builders<Profile>.Filter.Regex(p => p.email, '^' + search)); query=query&Builders.Filter.And(query, Builders.Filter.Regex(p=>p.email,'^'+search)); 但是我知道MongoDb不能在regex查询
query = query & Builders<Profile>.Filter.And(query,
Builders<Profile>.Filter.Regex(p => p.email, '^' + search));
query=query&Builders.Filter.And(query,
Builders.Filter.Regex(p=>p.email,'^'+search));
但是我知道MongoDb
不能在regex
查询中使用索引。是否有可能实现一个使用索引的替代方案?此外,我还有许多可以实现的正则表达式,例如,按字符串的开始和结束、字符串包含和其他进行搜索
我使用的是mongodbv3.0.2
&官方c#driver v2.0
请参阅描述索引如何处理正则表达式查询的部分。其要点是,只有在正则表达式是“前缀”表达式的情况下,才能有效地使用索引,这意味着匹配的字符串始终以相同的子字符串开头
因此,搜索“按字符串的开头”(如代码示例中所示)将有效地使用索引。使用正则表达式“按字符串结尾”或“包含”进行搜索只能将索引用于索引扫描,而不能用于索引搜索。索引扫描的速度只能略快于表扫描,这主要是因为相关索引可能已经加载到内存中,而不必从磁盘读取
编辑:因为您询问的是备选方案-如果您确实需要对数据进行高效的全文搜索,您可以查看专用的文本搜索引擎,如和。将它们合并到您的解决方案中需要付出更大的努力,但是您的全文查询将会非常快