Raven DB中的自引用查询?

时间:2012-02-17 11:47:01

标签: ravendb

这可能是一个愚蠢的问题,但由于我对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);

我需要这个内部演示,所以不需要它是花哨的,只是功能。有人可以帮我理解如何在同一个数据库中加入两个文件吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

迪安, 您无法在查询中执行此类操作,但您可以非常轻松地在map / reduce操作中执行此操作