RavenDB - 添加索引会破坏不相关的查询

时间:2014-11-23 20:58:22

标签: indexing ravendb

当我将下面的索引添加到我的raven数据库时,会出现一个简单的查询,例如

return Session.Query<R>().FirstOrDefault(x => x.RId == Id); 

始终返回null。只有在强制Raven删除我的自定义索引后才会返回所需的功能。这是为什么?

有副作用的指数:

public class RByLatestCommentIndex : AbstractIndexCreationTask<R>
{
    public RByLatestCommentIndex()
    {
        SetMap();
    }

    void SetMap()
    {
        Map = r => r.Select(x => new
        {
            Id = x.Id,
            TimeStamp = x.Comments.Count() > 0 ? x.Comments.Max(u => u.Created)
                : x.Created
        }).OrderByDescending(y => y.TimeStamp).Select(r => new { Id = r.Id });
    }
}

public class RIdTransformer : AbstractTransformerCreationTask<R>
{
    public RIdTransformer()
    {
        TransformResults = ids => ids.Select(x => LoadDocument<R>(x.Id));
    }
}

编辑:

回复Ayende Rahien's评论:

在DB中有一个查询,否则将使用(Auto / R / ByRID),但使用的索引看起来像这样,令人费解:

from doc in docs.Rs select new { Images_Count__ = doc.Images["Count()"], RId = doc.RId } 

这种行为有什么解释?而且,我是否必须添加一个静态索引才能通过RId查询R?

0 个答案:

没有答案