Wir haben ein Objekt mit verschachtelten Eigenschaften, die wir leicht gefunden machen wollen. Dies war einfach genug, um zu erreichen, aber wir möchten auch Informationen basierend auf mehreren Feldern aggregieren. In Bezug auf die Domain haben wir mehrere Angebote, die die gleichen Details mit Ausnahme des Verkäufers haben. Wir müssen diese als ein einzelnes Ergebnis konsolidieren und Verkäuferoptionen auf der folgenden Seite zeigen. Wir müssen jedoch immer noch in der Lage sein, basierend auf dem Verkäufer auf der ersten Seite zu filtern.RavenDB Map Reduce Distinct Index
Wir haben versucht, so etwas wie die unten, um zu versuchen, mehrere Verkäufer auf einer Reihe zu sammeln, aber es enthält Duplikate und die Erstellung des Index dauert ewig.
Ich bin nicht sicher, dass dies der beste Weg, um dieses Problem zu behandeln, aber ziemlich neu für Raven und kämpfen für Ideen. Wenn wir den Index einfach und Gruppe auf der Client-Seite zu halten, dann können wir nicht halten konsequent Paging.
Irgendwelche Ideen?
'Provider = result.Select (x => x.Provider) .Distinct()' Sie dies nicht tun können. Map/Reduce wird verteilt, und Sie können davon ausgehen, dass Sie * nie * die gesamte Providersammlung haben. Der einzige vertrauenswürdige Linq Unternehmer der Verringerung ist solche, wie 'Count()' und 'Sum()', weil sie assoziativ sind –
ich weiß, dass dies in Plattformen wie Hadoop verteilt wird, aber sind Sie sicher, dies wird in RavenDB tatsächlich verteilt? –
Ja, Sie können niemals darauf warten, dass das gesamte Objekt in reduzierbar ist. Das bedeutet nicht, dass Sie es nicht haben werden, vielleicht sogar 99% der Zeit, aber selbst wenn Sie es in 1% der Fälle nicht tun, werden Sie sich in ein Minenfeld mit irreführenden Daten begeben. Wenn Sie eine Auswahl für ".Provider" in der Reduzierung ausführen, stellen Sie sicher, dass Ihrem Index Daten fehlen. –