【问题标题】:How to optimise this mongodb query in C#?如何在 C# 中优化这个 mongodb 查询?
【发布时间】:2013-11-12 11:06:42
【问题描述】:
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 资源昂贵。检查这个this answer in that。

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

如何优化这个.. 我是 mongoDb 的新手。 谢谢大家的回复。。

【问题讨论】:

  • 不要使用正则表达式,只需像在 SQL 中那样将字符串标准化为一致的大小写。
  • 这对codereview.stackexchange.com来说似乎是一个更好的问题
  • mnemosyn,对不起,我没有得到这个

标签: c# json mongodb query-optimization


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2021-01-27
      • 2010-11-15
      相关资源
      最近更新 更多