MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So implementieren Sie die verschachtelte $elemMatch-Abfrage von MongoDB in C#

Nun, ehrlich gesagt ist das Schreiben von Abfragen in C# etwas knifflig, aber Sie können immer einen Streich spielen.

var bsonQuery = "{'Details.a':{$elemMatch:{$elemMatch:{DeviceName : /.*Name0.*/}}}}";
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bsonQuery);

var result = col.FindSync (filter).ToList();

Ich deserialisiere eine einfache MongoDB-Abfrage in ein BsonDocument, das ich im Gegenzug als Filter an FindAsync übergebe.

Am Ende haben Sie das gewünschte Ergebnis in einem variablen Ergebnis.

Hinweis:Ich gehe davon aus, dass eine MongoDB-Verbindung hergestellt wurde und die Variable col enthält Verweis auf die MongoDB-Sammlung.

EDIT:Siehe folgenden Link https://groups.google.com/forum/#!topic/mongodb-csharp/0dcoVlbFR2A. Jetzt wurde bestätigt, dass der C#-Treiber keine namenlosen Filter unterstützt, also schreiben Sie die obige Abfrage mit Buidlers<BsonDocument>.Filter wird derzeit nicht unterstützt.

Um es kurz zu machen, Sie haben nur eine Wahl und das ist die Abfrage, wie ich sie oben in meiner Lösung erwähnt habe.