【问题标题】:MongoDB query with multiple search terms(regexes) in c# with 10gens driver?使用 10gens 驱动程序在 c# 中使用多个搜索词(正则表达式)进行 MongoDB 查询?
【发布时间】:2012-02-10 13:20:26
【问题描述】:

如果我们有

Blog{
  Name 'Blog1'
  Tags ['testing','visual-studio','2010','c#']
}
Blog{
  Name 'Blog2'
  Tags ['parallel','microsoft','c#']
}

通过控制台,我们可以执行并找到包含一些提供的标签的所有博客文章:

db.BlogPost.find({ 'Tags' : { '$regex' : ['/^Test/', '/^microsoft/', '/^visual/', '/^studio/', '/^c#/'] } });

我们如何在 c# 10gens 驱动程序中编写相同的查询? 如果不能通过 10gens c# 驱动写,有什么办法吗?

Query.Match 仅支持一种正则表达式。我们能不能给他提供多个正则表达式,或者我们应该结合起来

Query.Or(Query.Match("Test"), Query.Match("Micro"), Query.Match("Visual"))

我已经设法解决了 我已经设法做到了

{ "$or" : [{ "Tags" : /^programm/i }, { "Tags" : /^microsoft/i }, { "Tags" : /^visual/i }, { "Tags" : /^studio/i }, { "Tags" : /^assert/i }, { "Tags" : /^2010/i }, { "Tags" : /^c#/i }] }

但有件事告诉我,这是一个丑陋的 hack,可能会导致性能问题。小伙伴们怎么看?

问题的最终答案可以在以下位置找到: Official mongodb forum

【问题讨论】:

  • 这实际上行不通。在控制台中使用正则表达式文字,你不应该引用你的正则表达式——换句话说,使用/^Test/ 而不是'/^Test/'
  • 提供的查询在通过 mongo 控制台执行时有效。问题是我无法通过支持多关键字正则表达式搜索的 c# 驱动程序创建 mongo 查询。
  • @MarjanNikolovski 你是怎么解决的?谢谢;)

标签: mongodb mongodb-.net-driver


【解决方案1】:

是的,MongoDB c# 驱动程序应该自动对System.Text.RegularExpressions.Regex 的实例执行正确的操作。

因此,您应该能够构建完全相同的查询,除了您将使用正则表达式的实例来表示 ^Test、^microsoft、^visual 等,而不是字符串。

【讨论】:

  • 构造正则表达式不是问题,问题是如何构造正则表达式数组并使用Query.Match
猜你喜欢
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多