У меня есть документы, которые представляют 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; }
}
}
То, что я хочу знать:
- Основываясь на результатах, я хочу, я должен использовать индекс для этого (или трансформатор результатов, denormalised документов и т.д.)
- Если я должен использовать индекс, должен ли я использовать мульти-карту только для одного типа документа?
Новое как для Ворона, так и для NoSQL, поэтому я, возможно, ошибаюсь в этом.
Cheers, он работал достаточно хорошо, просто приятно знать, что это правильный путь. Мое событие на самом деле является перечислением, но хорошим моментом в отношении типа, полезным для последующего запроса. –