我在RavenDb中有这样的东西:
路径[hasMany]目标[hasMany]成就
所以我有一份包含目标和成就的文件。
如果它是传统数据库,我可以进行此查询
select g.id, count(a.id)
from path p
join goals g on p.id = g.pathId
join achievement a on a.id = g.id
group by goal.id
如何在ravendb中执行此查询?
现在我这样做:
Path path = RavenSession.Load<Path>(pathId);
path.Goals.Select(x => new
{
Id = x.Id,
Name = x.Name,
TOnCourse = x.Achievements.Where(y => y.Resolution == Resolution.OnCourse).Count(),
TAstray = x.Achievements.Where(y => y.Resolution == Resolution.Astray).Count()
});
我不想这样做,因为我认为我正在加载所有“目标”和“成就”而我只想要在DB中进行聚合(ravendb)
如果您想了解我的模型中的路径,目标和成就,我的“宠物”项目http://dpath.apphb.com/
修改 我想我会得到那些“计算”的值并将它们作为属性放在目标中,因为我认为计算将非常普遍,所以保持简单,因为无法删除成就,并且用户将具有“关系”有目标和成就的数量,以获得“我的统计”
尽管如此,我想知道如何在RavenDb中完成该查询
谢谢!
答案 0 :(得分:0)
您只为此加载一个文档,因此这可能不是问题。 你没有加载任何其他东西。
您可以在索引中执行此操作,然后从那里加载存储的字段,但除非您的文档非常大,否则我认为您不需要这样做。