当前位置: 首页 > 编程语言 > C#

c#mongodbcasesensitivesearchshare

时间:2023-04-10 20:11:20 C#

c#mongodbcasesensitivesearch我有一个集合,里面存放了用户的邮箱和密码。我显然不想要求用户插入他的电子邮件,区分大小写,并且与他第一次注册时完全一样。我正在使用mongodb2.0c#驱动程序,我正在重复它,因为我看到了一个用正则表达式编写的查询解决方案,但恐怕我不能在这里使用它。我的查询看起来像varfilter=Builders.Filter.And(Builders.Filter.Eq(u=>u.Email,email),Builders.Filter.Eq(u=>u.Password,password));ME_UserfoundUser=null;varoptions=newFindOptions{Limit=1};使用(varcursor=awaitmanager.User.FindAsync(filter,options)){while(awaitcursor.MoveNextAsync()){varbatch=cursor.Current;foreach(ME_User批量用户)foundUser=user;我有一个凌乱的问题正在杀死我,但我不能让自己再次以小写形式保存这些数据并拥有相同内容的两个副本。另外,我希望电子邮件完好无损,就像用户插入它一样。在不使用正则表达式的情况下,Mongodb中对字符串字段的过滤区分大小写。为什么不能使用正则表达式?您的查询可以这样编辑:varfilter=Builders.Filter.And(Builders.Filter.Regex(u=>u.Email,newBsonRegularExpression("/^"+email+"$/i"),Builders.Filter.Eq(u=>u.Password,password));注意“^”和“$”符号用于指定全词搜索,最重要的是正则表达式末尾的不区分大小写的运算符(“/i”).另一种方法是文本搜索,它需要创建文本索引并且对拉丁字母不区分大小写:http://docs.mongodb.org/manual/reference/operator/query/text/#match-operationinC#,你会使用文本过滤器:varfilter=Builders.Filter.And(Builders.Filter.Text(email),Builders.Filter.Eq(u=>u.Password,password));usethetextintheORclause对于索引查询,还需要在Password字段上建立索引,否则OR查询会产生错误:Othernon-TEXTclausesunderORalsomustalsobeindexed我比较喜欢用Linq。以上就是C#学习教程:c#mongodb区分大小写搜索分享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——varmatch=theCollection.AsQueryable().SingleOrDefault(x=>x.Email.ToLower()==emailToSearchFor。降低());本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: