RavenDbにいくつかのコマンドが保存されており、それらはすべてICommandを実装しています。最後に変更されたRaven-Entity-Nameのメタデータを検索できるようにしたい。私は現在、以下のように各コマンドでマルチマップを実行しています。
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);
}
}
私はこれを次のように照会します:
session.Query<CommandAuditSearch_Index.Results, CommandAuditSearch_Index>()
.Where(x => x.CommandType == commandType && x.LastModified >= DateTime.Today).OfType<ICommand>().ToList();
タグ(エンティティ名)と最終更新日を取得するためにRavenにすでに組み込まれているインデックスがあることは知っていますが、上記のインデックスが示すように、結果を取得する方法がわからないようです。
誰かが静的インデックスの正しい方向に私を向けることができますか?ICommandsのリストとして結果を与えるクエリを実行する必要があるコマンドごとに、上記のようなマルチマップを用意する必要はありませんか?
ありがとう
水田