Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MongoDb使用索引替代c通过正则表达式查找文档#_C#_Regex_Mongodb_Mongodb Csharp 2.0 - Fatal编程技术网

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

请参阅描述索引如何处理正则表达式查询的部分。其要点是,只有在正则表达式是“前缀”表达式的情况下,才能有效地使用索引,这意味着匹配的字符串始终以相同的子字符串开头

因此,搜索“按字符串的开头”(如代码示例中所示)将有效地使用索引。使用正则表达式“按字符串结尾”或“包含”进行搜索只能将索引用于索引扫描,而不能用于索引搜索。索引扫描的速度只能略快于表扫描,这主要是因为相关索引可能已经加载到内存中,而不必从磁盘读取

编辑:因为您询问的是备选方案-如果您确实需要对数据进行高效的全文搜索,您可以查看专用的文本搜索引擎,如和。将它们合并到您的解决方案中需要付出更大的努力,但是您的全文查询将会非常快