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

questionAnswers(1)

yourAnswerToTheQuestion