2011-03-07 3 views
1

Je cherche à obtenir tous les éléments marqués avec des tags. $ OR ne peut pas être imbriqué dans MongoDB mais qu'en est-il de faire une requête multi-OR dans le pilote C# en utilisant une liste de balises ou une liste de chaînes ?. En utilisant un QueryComplete ou un StringBuilder pour construire un Or (tag1, tag2 params..tagn), quelle est la méthode pour interroger le contenu étiqueté en utilisant multi OR déclaration?MongoDB C# offi: multi OU requête comme recherche Tags

merci.

var query=new QueryComplete[]; 
List<Tags> tags=new List<Tags>(); 
foreach(Tag tag in tags) 
{ 

} 

Répondre

3

Que diriez-vous quelque chose comme ceci:

List<QueryComplete> myarray = new List<QueryComplete>(); 
foreach(Tag t in Tags) 
{ 
    myarray.Add(Query.EQ(TagName, t.TagName)); 
} 

var query = Query.Or(myarray.ToArray()); 
+0

Imaginer récursives ou déclaration comme foreach (Tag tag dans les balises) {query = Query.Or (requête, Query.EQ ("tag.Name", tag.Name))} vous allez imbriquer les balises et vous ne pouvez pas. – user325558

+0

Ouais .... merci. – user325558

1

Il est $in opérateur MongoDB, il semble plus adapté pour tâche ci-dessus:

List<Tags> tags=new List<Tags>(); 
Query.In("TagName", BsonArray.Create(tags.Select(x=> x.Name))); 
Questions connexes