Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst MongoDb distinct all

Mitglied: Phreak87

Phreak87 (Level 1) - Jetzt verbinden

09.05.2019, aktualisiert 15:22 Uhr, 242 Aufrufe, 4 Kommentare

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)
Mitglied: ukulele-7
10.05.2019 um 07:11 Uhr
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:
01.
SELECT STRING_AGG(DISTINCT ColA) FROM tabelle UNION ALL SELECT STRING_AGG(DISTINCT ColB) FROM tabelle
Bitte warten ..
Mitglied: Phreak87
11.05.2019 um 11:41 Uhr
Das Ausgabeformat ist mir egal, wenn ich daraus die Gruppen ohne Zusammenhang ausleiten kann.
Im Endeffekt sollte es ein "select query Into .." mit anschließendem distinct je Spalte sein.
Bei dem regulären vorgehen wären das je distinct 1 query mit gleichen Resultaten, was schlecht für die Performance ist. Es sei denn die MongoDb hat einen internen Cache für gleiche querys
Bitte warten ..
Mitglied: Phreak87
11.05.2019, aktualisiert um 20:20 Uhr
Ich versuche es einfach mal mit $facets.
Vielleicht funktioniert ja das
Bitte warten ..
Mitglied: Phreak87
16.05.2019 um 22:06 Uhr
Lösung:

Collection.Aggregate:

Der Query (Alle Dokumente):

{ "$match" :
{ "_id" : { "$exists" : true } }
}

Die Facets:

{ "$facet" : {
"ValA" : [{ "$group" : { "_id" : "$ValA"}}],
"ValB" : [{ "$group" : { "_id" : "$ValB" } }],
"ValC" : [{ "$group" : { "_id" : "$ValC" } }]
}}
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Distinct Abfrage aber ohne Distinct
gelöst Frage von Maexx77Datenbanken11 Kommentare

Hallo, ich bekomme mit einer größeren Abfrage aus der Datenbank folgende Daten: Artikel Maschine Material Datum 1AC1.1.2017 2AC1.2.2017 3BD1.1.2017 ...

Datenbanken
Mongodb Daten aus Array auslesen
gelöst Frage von BaanauseDatenbanken1 Kommentar

Habe folgendes Programm geschrieben um eine MongoDB auszulesen. Als Ergebnis bekomme ich ein Array wie folgt: { _id: ...

Datenbanken
MongoDB Update String to Array
Frage von Phreak87Datenbanken

Hallo, ich möchte in einer MongoDB via VB.Net mittels Query/Update ein Update auf ein Feld machen. Problem ist dass ...

Datenbanken
Upgrade MongoDB 3.4 auf 3.6
Erfahrungsbericht von FrankDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

Neue Wissensbeiträge
Windows Tools
How to log in my Norton
Anleitung von nortonexpert vor 31 MinutenWindows Tools

Norton products are quite advanced to keep your devices protected against the virus and malware threats. It is quite ...

Google Android

Heise: Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 18 StundenGoogle Android7 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 1 TagWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 1 TagInternet1 Kommentar

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Heiß diskutierte Inhalte
Linux Userverwaltung
Ist sudo auf Servern Pflicht?
gelöst Frage von lcer00Linux Userverwaltung13 Kommentare

Hallo zusammen, wir haben für einige Netzwerkdienste einige Debian Server. Auf diesen Servern arbeiten keine Benutzer im eigentlichen sinne. ...

Humor (lol)
Mitarbeiter meldet: VPN funktioniert nicht
gelöst Frage von Epixc0reHumor (lol)13 Kommentare

Servus, einer unserer Mitarbeiter meldete heute, sein VPN funktioniert Zuhause nicht, im LTE Netz aber schon. Per Teamviewer hin ...

Windows 10
Windows am MAC
Frage von LeeX01Windows 1013 Kommentare

Guten Abend zusammen, ich habe gerade ein Macbook Pro vor mir welches ich mit einem Windows 10 to go ...

Batch & Shell
Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln
Frage von bensonhedgesBatch & Shell12 Kommentare

Hallo, ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln, wann derjeweilige Server zuletzt gepatcht wurde (Liste ...