使用10gens驱动程序在c#中使用多个搜索项(regex)进行MongoDB查询?

时间:2012-02-10 13:20:26

标签: mongodb mongodb-.net-driver

如果我们有

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 }] }

但有些东西告诉我,这是一个丑陋的黑客,可能会导致性能问题。你觉得怎么样?

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

1 个答案:

答案 0 :(得分:1)

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

所以你应该能够构建完全相同的查询,除了你将使用Regex的实例来进行^ Test,^ microsoft,^ visual等而不是字符串。