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都是新手,所以我可能会用完全错误的方式来解决这个问题。
干杯,它工作得很好,很高兴知道这是正确的方式。我的事件实际上是一个枚举,但是关于类型的好处,有助于稍后查询。 –