0
的我有一些文件表示Jobs
:基於這些我想要顯示事件的時間表在指定日期範圍RavenDB:正確使用多圖
{
"name": "Job 1",
"startAt": "2013-12-13",
"endAt": "2013-12-15"
},
{
"name": "Job 2",
"startAt": "2013-12-14",
"endAt": "2013-12-16"
}
。而不是每個字段查詢和客戶端上的結果拼接在一起,我正打算創建一個索引返回是這樣的:
{"Results":[
{
"name": "Job 1",
"timestamp": "2013-12-13",
"event": "started"
},
{
"name": "Job 2",
"timestamp": "2013-12-14",
"event": "started"
},
{
"name": "Job 1",
"timestamp": "2013-12-15",
"event": "ended"
},
{
"name": "Job 2",
"timestamp": "2013-12-16",
"event": "ended"
}
]}
他們會爲工作其他一些「事件」隨着時間的推移,記錄付款到期時間等,這也會出現在時間表上 - 但希望這裏有足夠的細節來解釋我正在嘗試做什麼。
到目前爲止,我已經有了一個多地圖索引的工作,但從我的理解,多地圖是索引不同的文檔類型,而我只是一個。
public class Jobs_Timeline : AbstractMultiMapIndexCreationTask<Jobs_Timeline.IndexResult>
{
public Jobs_Timeline()
{
AddMap<Job>(jobs => jobs.Select(x => new { x.Name, Timestamp = x.StartAt, Event = "started" }));
AddMap<Job>(jobs => jobs.Select(x => new { x.Name, Timestamp = x.EndAt, Event = "ended" }));
Store(x => x.Name, FieldStorage.Yes);
Store(x => x.Timestamp, FieldStorage.Yes);
Store(x => x.Event, FieldStorage.Yes);
}
public class IndexResult
{
public string Name { get; set; }
public DateTime Timestamp { get; set; }
public string Event { get; set; }
}
}
我想知道的是:
- 基於我想要的結果,我應該使用此索引(或結果變壓器,去歸一化文檔等)
- 如果我應該使用索引,我是否應該使用多個地圖而不只是一種文檔類型?
Raven和NoSQL都是新手,所以我可能會用完全錯誤的方式來解決這個問題。
乾杯,它工作得很好,很高興知道這是正確的方式。我的事件實際上是一個枚舉,但是關於類型的好處,有助於稍後查詢。 –