Nach spezifischem Element des Arrays mit Mongo-Aggregation-Framework gruppieren

7

Ist es möglich, das Aggregationsframework zu verwenden, um nach einem bestimmten Element eines Arrays zu gruppieren?

So dass mit Dokumenten wie folgt:

%Vor%

Ich könnte eine eindeutige Liste der Top-Favoriten (dh Lebensmittel bei Index 0) zusammen mit der Höhe der größten Person, die Top-Favorit ist, das ist?

Ähnliches (obwohl es nicht funktioniert, da die Array-Index-Zugriffspunktnotation nicht im Aggregationsrahmen zu funktionieren scheint):

%Vor%     
Russell 24.10.2012, 18:30
quelle

4 Antworten

14

Es scheint so, als würden Sie sich auf das Lieblingsessen verlassen, wenn jede Person zuerst in der Reihe ist. Wenn ja, gibt es einen Aggregations-Framework-Operator, den Sie nutzen können.

Hier ist die Pipeline, die Sie verwenden können:

%Vor%

Bei diesem Beispiel-Dataset:

%Vor%

Sie erhalten diese Ergebnisse:

%Vor%     
Asya Kamsky 25.10.2012 01:41
quelle
5

Sieht so aus, als ob es momentan nicht möglich ist, ein bestimmtes Element aus einem Array in Aggregation zu extrahieren: Ссылка

    
JohnnyHK 24.10.2012 20:20
quelle
2

Ich denke, Sie können die Operatoren $ project und $ unwind verwenden (lassen Sie es mich wissen, wenn dies nicht das ist, was Sie erreichen wollen):

%Vor%

Ссылка

    
Jenna 24.10.2012 23:22
quelle
1

Fügen Sie nach der Verwendung von "$wind" :

nur weitere Informationen zum Ergebnis hinzu


DOKUMENT:

%Vor%


AGGREAGATION:

%Vor%


ERGEBNIS:

%Vor%


Zusätzlich:
Wenn in einem Sammlungsdatensatz mehr als zwei Feldfelder vorhanden sind, Wir können "$ project" Bühne verwenden um das Array-Feld anzugeben.

%Vor%     
Eddy 06.05.2016 07:22
quelle