Wenn wir haben
Blog{
Name 'Blog1'
Tags ['testing','visual-studio','2010','c#']
}
Blog{
Name 'Blog2'
Tags ['parallel','microsoft','c#']
}
Über die Konsole können wir alle Blogeinträge ausführen und finden, die einige der angegebenen Tags enthalten:
db.BlogPost.find({ 'Tags' : { '$regex' : ['/^Test/', '/^microsoft/', '/^visual/', '/^studio/', '/^c#/'] } });
Wie können wir die gleiche Abfrage im c# 10gens Treiber schreiben? Gibt es eine Alternative, wenn sie nicht über den 10gens c# Treiber geschrieben werden kann?
Query.Match unterstützt nur ein Regex. Können wir ihm mehrere Regexes geben, oder sollten wir sie kombinieren
Query.Or(Query.Match("Test"), Query.Match("Micro"), Query.Match("Visual"))
Ich habe es geschafft, es mit Ich habe es gemacht mit
{ "$or" : [{ "Tags" : /^programm/i }, { "Tags" : /^microsoft/i }, { "Tags" : /^visual/i }, { "Tags" : /^studio/i }, { "Tags" : /^assert/i }, { "Tags" : /^2010/i }, { "Tags" : /^c#/i }] }
Aber irgendetwas sagt mir, dass dies ein hässlicher Hack ist, der zu Leistungsproblemen führen kann. Was denken Sie, Leute?
Die endgültige Antwort auf das Problem finden Sie unter: Offizielles mongodb Forum