如果我们有
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
答案 0 :(得分:1)
是的,MongoDB c#驱动程序应该使用System.Text.RegularExpressions.Regex的实例自动执行正确的操作。
所以你应该能够构建完全相同的查询,除了你将使用Regex的实例来进行^ Test,^ microsoft,^ visual等而不是字符串。