MongoDB-Abfrage mit elemMatch für verschachtelte Array-Daten

8

Ich habe ein Dokument mit verschachtelten Array-Daten. Ich versuchte hoffnungslos, die Daten mit $elemMatch zu filtern, aber ich kann nicht herausfinden, warum es nicht funktioniert.

%Vor%

Ich habe versucht, diese Abfrage zu verwenden:

%Vor%

Aber es bringt immer alle Module zurück. Wenn ich mandatory: true verwende, gibt es nichts zurück, was darauf hindeutet, dass es funktioniert. Irgendeine Idee was mache ich falsch? Danke!

    
Phil 11.12.2013, 17:19
quelle

1 Antwort

16

Ihre Abfrage gibt einfach alle Dokumente zurück, die ein modules -Element mit name == 'foo' enthalten. Um $elemMatch zum Filtern der Ausgabe zu verwenden, müssen Sie sie verwenden im Projektionsargument des Aufrufs find anstelle eines Teils der Abfrage:

%Vor%

Um beide Konzepte zu kombinieren, können Sie auf den Index des in der Abfrage übereinstimmenden Array-Elements mit $ :

verweisen %Vor%

Jeder Weg kehrt zurück:

%Vor%

Wenn Sie andere Felder in der Ausgabe benötigen, fügen Sie sie zum Projektionsobjekt hinzu (z. B. name: 1 ).

    
JohnnyHK 11.12.2013, 17:27
quelle

Tags und Links