編集します。この問題の簡単な説明は次のとおりです。イベントがあります
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日までの日付を持つすべてのイベントを検索します。
日付でクエリを並べ替えることができなければなりません
結果をページングできる必要があります。
簡単そうですね。これには2つのアプローチがありますが、どちらも失敗します。
複数のfromでインデックスを作成します。そのようです:
from event in docs.Events
from date in event.Dates
select new { Dates = date}
これは機能し、クエリが簡単です。ただし、結果がスキップされたため、ページングできません(インデックスには各イベントの重複が含まれます)。また、ページングと組み合わせてソートも失敗します。
..............。
簡単なインデックスを作成する
from event in docs.Events
select new { Dates = event.Dates }
これも機能し、クエリも簡単です。ページングすることもできます。ただし、並べ替えることはできません。クエリされた範囲内で最初に利用可能な日付でドキュメントを並べ替える必要があります。
私がこれを解決できない場合、それはおそらく私たちにとって取引のブレーカーになるでしょう..そして私は本当にRavenDBが好きである以外に、新しいアプリケーションを使い始めたくありません。