如何在RavenDB中完成此查询

时间:2012-07-24 22:21:54

标签: ravendb

我在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中完成该查询

谢谢!

1 个答案:

答案 0 :(得分:0)

您只为此加载一个文档,因此这可能不是问题。 你没有加载任何其他东西。

您可以在索引中执行此操作,然后从那里加载存储的字段,但除非您的文档非常大,否则我认为您不需要这样做。