MongoDb distinct all
Hallo,
Ich bin auf der suche nach einer schnellen Methode um in einer MongoDb alle Cols in einem distinct abzufragen.
Angenommen ich habe:
ColA: A, ColB: B,Col..
ColA: A, ColB: C,Col..
ColA: C, ColB: A,Col..
Für distinct(ColA) erhalte ich A,C
Für distinct (ColB) erhalte ich A,B,C
... Je Col 1 distinct ...
Was jedoch mit gleichem query jedesmal zb.: 15000 Datensätze durchsucht.
Gibt es eine Möglichkeit in einer Abfrage alle Resultate zu sammeln und dann ein distinct je Col anzuwenden?
Ein normales distinct auf mehrere Col würde alle Kombinationen aller Cols beinhalten, was nicht dem gleichen Resultat entsprechen würde.
zB.:
ColA: (A,B),
ColB (A,B,C)
Ich bin auf der suche nach einer schnellen Methode um in einer MongoDb alle Cols in einem distinct abzufragen.
Angenommen ich habe:
ColA: A, ColB: B,Col..
ColA: A, ColB: C,Col..
ColA: C, ColB: A,Col..
Für distinct(ColA) erhalte ich A,C
Für distinct (ColB) erhalte ich A,B,C
... Je Col 1 distinct ...
Was jedoch mit gleichem query jedesmal zb.: 15000 Datensätze durchsucht.
Gibt es eine Möglichkeit in einer Abfrage alle Resultate zu sammeln und dann ein distinct je Col anzuwenden?
Ein normales distinct auf mehrere Col würde alle Kombinationen aller Cols beinhalten, was nicht dem gleichen Resultat entsprechen würde.
zB.:
ColA: (A,B),
ColB (A,B,C)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 449390
Url: https://administrator.de/contentid/449390
Ausgedruckt am: 20.11.2024 um 00:11 Uhr
4 Kommentare
Neuester Kommentar
Also zunächst macht ein DISTINCT ja nichts anderes als ein GROUP BY und wenn mehrere Spalten im DISTINCT oder GROUP BY stehen behlaten die natürlich auch ihren "Zusammenhang", das heißt die drei Ausgangsdatensätze sind schon eindeutig und lassen sich nicht sinnvoll weiter gruppieren.
Dein Beispiel zeigt ein ganz anderes Ausgabeformat, dort werden ja die Werte aus einer Spalte zu einer Zeile. Nun bin ich kein kenner von MongoDB aber mit einem Select pro Spalte, einem STRING_AGG() für die Werte und einem UNION ALL müsste das gehen. Ich probiers mal in pseudo Code:
Dein Beispiel zeigt ein ganz anderes Ausgabeformat, dort werden ja die Werte aus einer Spalte zu einer Zeile. Nun bin ich kein kenner von MongoDB aber mit einem Select pro Spalte, einem STRING_AGG() für die Werte und einem UNION ALL müsste das gehen. Ich probiers mal in pseudo Code:
SELECT STRING_AGG(DISTINCT ColA) FROM tabelle UNION ALL SELECT STRING_AGG(DISTINCT ColB) FROM tabelle