编辑. 这是对该问题的简化描述:我有活动
class Event { Id = 0, Dates = new DateTime[] {} }
例如,我需要查询某个日期范围内的所有事件(8 月 1 日至 10 月 20 日)。结果应列出此范围内按日期排序的唯一事件。像这样:
Event one 2012-08-04,2012-09-06,2012-09-10
Event two 2012-10-02
etc.
我需要能够分页此结果。而已。
我在使用 ravendb 的活动中遇到以下问题。我有一个包含日期数组的文档(代表一个事件),例如 2012-08-20、2012-08-21、2012-09-14、2013-01-05 等。
class Event { Dates = []; }
我有几个必须满足的标准:
我需要能够在某个日期范围内查询这些文档。例如,查找所有日期介于 8 月 1 日和 9 月 22 日之间或 10 月 1 日和 10 月 3 日之间的所有事件。
我必须能够按日期对查询进行排序
我必须能够对结果进行分页。
看起来很容易对吧?好吧,我有两种方法,但它们都失败了。
创建具有多个 from 的索引。像这样:
from event in docs.Events
from date in event.Dates
select new { Dates = date}
这有效并且易于查询。但是,由于skippedresults(索引将包含每个事件的重复项),它不能被分页。并且排序与分页结合也会失败。
…………………………………………………………………………
创建一个简单的索引
from event in docs.Events
select new { Dates = event.Dates }
这也有效,查询简单,也可以分页。但是无法排序。我需要按查询范围内的第一个可用日期对文档进行排序。
如果我不能解决这个问题,这对我们来说可能是一个交易破坏者......而且我真的不想开始使用新应用程序,除了我真的很喜欢 RavenDB..