如何在C#中优化这个mongodb查询?

时间:2013-11-12 11:06:42

标签: c# json mongodb query-optimization

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

这是我的SQL查询我想使用C#驱动程序从MongoDB获取数据。 我的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.Check this this answer in that

我正在使用c#,mongoDb,mongodb C#native driver。

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

2 个答案:

答案 0 :(得分:1)

您可以使用聚合项目$ toLower参见:http://docs.mongodb.org/manual/reference/operator/aggregation/toLower/

像: db.posts.aggregate([{$项目:{DATE2: “$日期”,标题:{$ TOLOWER: “$标题”}}}

答案 1 :(得分:0)

没有简单的方法可以有效地使用MongoDB。

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