我在 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()
});
我不想这样做,因为我认为我正在加载所有“目标”和“成就”,而我只想在数据库中进行聚合(ravendb)
如果你想知道我的模型中真正的路径、目标和成就是我的“宠物”项目http://dpath.apphb.com/
编辑 我想我会得到那些“计算”的值并将它们作为属性放在目标中,因为我认为计算将非常普遍,因此保持简单,因为无法删除成就,并且用户将具有“关系” 有目标和成就的数量以获得“我的统计数据”
不过,我想知道您将如何在 RavenDb 中完成该查询
谢谢!