如何在RavenDB中获取嵌入文档属性的聚合数据

本文关键字:属性 文档 数据 RavenDB 获取 | 更新日期: 2023-09-27 18:14:57

我有一个看起来像这样的模型

public class User
{
    public List<Action> Actions { get; set; }
}
public class Action
{
    public DateTime CreatedOn { get; set; }
}

我正试图找到一种方法来从所有用户的所有操作中获得CreatedOn最大值值。

我是RavenDB的新手,我不确定我是否应该使用Map/Reduce或其他。

如何在RavenDB中获取嵌入文档属性的聚合数据

以下是完整的示例:

public class User
{
    public string Id { get; set; }
    public List<Action> Actions { get; set; }
}
public class Action
{
    public DateTime CreatedOn { get; set; }
}
public class ActionCreatedOnResult
{
    public DateTime CreatedOn { get; set; }
}
public class Users_ActionCreatedOn : AbstractIndexCreationTask<User, ActionCreatedOnResult>
{
    public Users_ActionCreatedOn()
    {
        Map = users => from user in users
                       from action in user.Actions
                       select new
                                  {
                                      action.CreatedOn
                                  };
        Store(x => x.CreatedOn, FieldStorage.Yes);
    }
}
class Program
{
    static void Main(string[] args)
    {
        using (var documentStore = new DocumentStore{ Url = "http://localhost:8080/" })
        {
            documentStore.Initialize();
            IndexCreation.CreateIndexes(typeof(Users_ActionCreatedOn).Assembly, documentStore);
            using (var documentSession = documentStore.OpenSession())
            {
                var result = documentSession.Query<ActionCreatedOnResult, Users_ActionCreatedOn>()
                    .OrderByDescending(x => x.CreatedOn)
                    .AsProjection<ActionCreatedOnResult>()
                    .FirstOrDefault();
            }
        }
    }
}