2015-12-10 8 views
5

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?

+0

'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 –

+0

ich weiß, dass dies in Plattformen wie Hadoop verteilt wird, aber sind Sie sicher, dies wird in RavenDB tatsächlich verteilt? –

+0

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. –

Antwort

0

Sie Gruppierung auf dem Dokument-ID. deal.Id, werden Sie so nie wirklich eine Reduktion über mehrere Dokumente erzeugen. Ich glaube nicht, dass dies beabsichtigt ist.

+0

Entschuldigung Ayende! Diese Situation wurde irrtümlich erstellt, als ich versuchte, das Beispiel für das Posten zu vereinfachen. Ich habe die Frage aktualisiert, um das tatsächliche Problem widerzuspiegeln. Stellen Sie sich die ID als eine gemeinsame ID für verknüpfte Produktinformationen vor. –