Raven DB中的自引用查询



这可能是一个愚蠢的问题,但由于我是Raven DB的新手,所以我敢问。

想象一下我有以下内容:

  • Raven DB中填充了许多"EventData"对象的实例
  • 每个EventData实例都有一个MessageId和一个时间戳
  • MessageId将在列表中出现两次,一次用于发送消息,另一次用于接收消息

因此,在这种情况下,我想对表进行自引用联接,并根据MessageId搜索开始/结束EventData对,然后我可以使用每个对的Timestamp字段来计算两个事件之间的时间差。

我原以为以下代码可以工作,但我得到了一个"不支持的方法:SelectMany"错误。

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

我需要这个内部演示,所以不需要它是花哨的,只是功能性的。有人能帮我理解如何将两个文档连接到同一个数据库中吗?

谢谢!

院长,你不能在查询中做这些事情,但你可以在映射/减少操作中很容易地做到这一点。

最新更新