RavenDB - 当枚举enum属性时,没有返回任何结果

时间:2015-02-26 23:12:00

标签: indexing ravendb

我有以下索引来跟踪帖子的观看次数:

public class PostsByRequestsIndex : AbstractIndexCreationTask<PostRequest, RequestsGroupResult>
{
    public PostsByRequestsIndex()
    {
        Map = posts => 
            posts.Select(r => new  { RequestCount = 1, 
            PostIdInternal = r.PostIdInternal,
            PostStatus = LoadDocument<Post>(r.Id).Status.CurrentStatus});

        Reduce = posts => posts.GroupBy(r => r.PostIdInternal).Select(
            x =>  new PostsGroupResult { PostIdInternal = x.Key,          
           RequestCount = x.Sum(s => s.RequestCount) , 
           PostStatus = x.First().PostStatus});

    }
}

public class RequestsGroupResult
{
    public PostStatus.Status PostStatus { get; set; }
    public string PostIdInternal { get; set; }
    public int RequestCount { get; set; }
}

这个索引打破了对Post类型文档的查询,所以我添加了另一个索引来索引所有帖子:

public class PostsIndex : AbstractIndexCreationTask<Post>
{
    public PostsIndex()
    {
        Map = Posts => Posts.Select(r => new {
            r.Id , 
            Status_CurrentStatus = r.Status.CurrentStatus, 
            r.Title , 
            r.Comments , 
            r.Content , 
//more properties
            r.Created });
        StoreAllFields(FieldStorage.Yes); 
    }
}

这解决了对Post类型文档的现有查询的问题。

以下查询:

Session.Query<RequestsGroupResult, PostsByRequestsIndex>()
           .Where(r => r.PostStatus == PostStatus.Status.Init)
           .OrderByDescending(r => r.RequestCount)

在RavenDB工作室中检查索引时,它显示索引的PostStatus字段不包含任何值,即使Post文档都正确存储它们各自的状态。

如何将Post.PostStatus字段编入索引以正确检索其状态?

0 个答案:

没有答案