【问题标题】:How to accomplish this query in RavenDB如何在 RavenDB 中完成此查询
【发布时间】:2012-07-25 20:05:51
【问题描述】:

我在 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/

编辑 我想我会得到那些“计算出来的”值并将它们作为属性放在 Goal 中,因为我认为计算会很常见,所以保持简单,因为成就不能被删除,并且用户会有一个“关系”有目标和成就数量以获得“我的统计数据”

不过,我想知道您将如何在 RavenDb 中完成该查询

谢谢!

【问题讨论】:

    标签: ravendb


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多