Wyszukiwanie według nazwy podmiotu i ostatniej zmodyfikowanej daty
Mam wiele poleceń przechowywanych w RavenDb i wszystkie implementują ICommand. Chcę móc wyszukiwać metadane ostatniej zmodyfikowanej i Raven-Entity-Name. Obecnie wykonuję wiele map dla każdego polecenia, jak poniżej:
public class CommandAuditSearch_Index : AbstractMultiMapIndexCreationTask<CommandAuditSearch_Index.Results>
{
public class Results
{
public string CommandType { get; set; }
public DateTime LastModified { get; set; }
}
public CommandAuditSearch_Index()
{
AddMap<NewEmployeeStartCommand>(employees => employees.Select(x => new
{
CommandType = MetadataFor(x).Value<string>("Raven-Entity-Name"),
LastModified = MetadataFor(x).Value<DateTime>("Last-Modified")
}));
AddMap<EmployeeLeaverCommand>(employees => employees.Select(x => new
{
CommandType = MetadataFor(x).Value<string>("Raven-Entity-Name"),
LastModified = MetadataFor(x).Value<DateTime>("Last-Modified")
}));
Index(results => results.CommandType, FieldIndexing.Analyzed);
}
}
Pytam o to w następujący sposób:
session.Query<CommandAuditSearch_Index.Results, CommandAuditSearch_Index>()
.Where(x => x.CommandType == commandType && x.LastModified >= DateTime.Today).OfType<ICommand>().ToList();
Wiem, że jest już wbudowany indeks w Raven, aby uzyskać Tag (nazwa podmiotu) i datę ostatniej modyfikacji, ale nie wydaje mi się, aby dowiedzieć się, jak uzyskać wyniki, jak podaje mój indeks powyżej.
czy ktoś może wskazać mi właściwy kierunek indeksu statycznego, w którym nie muszę mieć wielu map, jak wyżej, dla każdego polecenia, które muszę zapytać, co daje mi wyniki jako listę ICommands?
Dzięki
Paddy