1
SELECT 
Member_strMobileNo,
strMembername
FROM tblMembers WITH (NOLOCK)
WHERE CHARINDEX (LOWER(@strMembername), LOWER(strMembername)) > 0
OR CHARINDEX (LOWER(@strMobileNo), LOWER(Member_strMobileNo)) > 0

这是我想使用 C# 驱动程序从 MongoDB 获取数据的 SQL 查询。我的 Json 结构是:

{
 "memberName" : "seema",
 "Email" : seema@gmail.com
  "Mob"  : 9876543
}

实际上,此查询用于搜索详细信息。

在 mongo 我试过这个,

 var query = Query.Or(Query.In("memberName",  BsonRegularExpression.Create(String.Format("/{0}/i", strMemberName)) ),
                                     new QueryDocument("Mob", BsonRegularExpression.Create(String.Format("/{0}/i", strMobileNo))).

但我想这个查询不会很好,因为由于资源昂贵的 BsonRegularExpression。检查这个这个答案

我正在使用 c#、mongoDb、mongodb C# 本机驱动程序。

如何优化这个..我是 mongoDb 的新手..感谢所有回复..

4

2 回答 2

1

您可以使用聚合项目 $toLower 执行此操作,请参阅:http ://docs.mongodb.org/manual/reference/operator/aggregation/toLower/

类似于: db.posts.aggregate([{$project:{date2:"$date",title:{$toLower:"$title"}}}

于 2013-11-20T17:57:23.570 回答
0

使用 MongoDB 没有简单的方法可以有效地做到这一点。

我建议您维护字段的小写版本(例如 normalizedMemberName),将它们编入索引并将它们用于您的查询。

于 2013-11-14T12:00:33.863 回答