Domanda

Questa potrebbe essere una domanda stupida, ma come io sono abbastanza nuovo a Raven DB ho intenzione di coraggio di chiedere.

Immaginate Ho il seguente:

  • un Corvo DB popolato con un certo numero di istanze dell'oggetto "EventData".
  • Ogni istanza EventData ha un MessageId e un timestamp.
  • apparirà la MessageId due volte nella lista, una volta per quando il messaggio è stato inviato e l'altro per quando è stato ricevuto.

Quindi, per questo scenario mi piacerebbe fare un auto-referenziale unirsi sul tavolo e cercare l'inizio / fine coppie EVENTDATA basate su MessageId, che ho potuto quindi utilizzare il campo timestamp di ciascuna per calcolare la differenza di tempo tra i due eventi.

ho pensato che il seguente codice avrebbe funzionato, ma ottengo un " Metodo non supportato: SelectMany ". Errore

    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);

Ho bisogno di questo per una demo interno in modo non c'è bisogno di essere di fantasia, solo funzionale. Qualcuno può aiutarmi a capire come unire due documenti nello stesso database?

Grazie!

È stato utile?

Soluzione

Dean, Non si può fare quel tipo di cose in una query, ma si può fare questo in una mappa / ridurre operazione molto facilmente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top