将Stack Overflow标记系统作为规范示例,如何获取带有计数的标记对象?
鉴于这些实体:
// Represents the data from the TagCount index
public class TagCount
{
public string Tag { get; set; }
public int Count { get; set; }
}
// Represents the data used to populate a tag-wiki
public class Tag
{
public string Tag { get; set; }
public DateTime Created { get; set; }
public string Description { get; set; }
}
public class Question
{
// elided
public List<string> Tags { get; set; }
// elided
}
以下TagCount索引的定义
// Map
from question in docs.Questions
from Tag in question.Tags
select new { Tag, Count = 1 }
// Reduce
from result in results
group result by result.Tag into g
select new
{
Tag = g.Key,
Count = g.Sum(x=>x.Count)
}
在标签页面(例如https://stackoverflow.com/tags)上,我们需要显示Tags集合和TagCounts索引的组合。也就是说,我们需要从Tag集合中显示Tag.Name和Tag.Description,并从TagCount索引中显示TagCount.Count。在SQL Server中,这可以通过连接来实现,但这显然是关系思维方式。什么是惯用的RavenDB实现这一目标的方法?
有没有办法将Count属性添加到Tag实体并让索引自动更新该属性?
答案 0 :(得分:2)
您可以通过修补来实现,在API中也称为UpdateByIndex。 你可以在这里看到: http://blog.hibernatingrhinos.com/12705/new-option-in-the-ravendb-studiondash-patching