Frage

Dies mag eine dumme Frage sein, aber da ich mit Raven DB ziemlich neu bin, werde ich es wagen zu fragen.

Stellen Sie sich vor, ich habe Folgendes:

  • Eine Raven DB bevölkerte mit einer Reihe von Instanzen des "EventData" -Objekts.
  • Jede EventData -Instanz hat eine MessageID und einen Zeitstempel.
  • Die MessageID wird zweimal in der Liste angezeigt, einmal, als die Nachricht gesendet wurde und die andere, wenn sie empfangen wurde.

Für dieses Szenario möchte ich also einen selbstreferenziellen Join auf der Tabelle durchführen und nach den Pairs mit Beginn/End-EventData basierend auf MessageID suchen, die ich dann das Zeitstempelfeld von jedem verwenden konnte, um den Zeitunterschied zwischen den beiden Ereignissen zu berechnen .

Ich dachte, der folgende Code würde funktionieren, aber ich bekomme eine "Nicht unterstützte Methode: SelectMany" Error.

    var mexEvent = from startEventData in session.Query<EventData>()
                   from endEventData in session.Query<EventData>()
                   where startEventData.MessageId == endEventData.MessageId
                   select new { MessageId = startEventData.MessageId, Latency = (endEventData.EventTime - startEventData.EventTime).TotalMilliseconds };

    foreach (var eventDataItem in mexEvent)
        Console.WriteLine("MessageId: " + eventDataItem.MessageId + ", Latency: " + eventDataItem.Latency);

Ich brauche dies für eine interne Demo, also brauche sie nicht schick, nur funktional. Kann mir bitte jemand helfen, zu verstehen, wie ich zwei Dokumente in derselben Datenbank beitreten kann?

Vielen Dank!

War es hilfreich?

Lösung

Dean, Sie können diese Art von Dingen in einer Abfrage nicht tun, aber Sie können dies in einer Karte/Reduzierung des Vorgangs sehr einfach tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top