RavenDb には次のようなものがあります。
パス [hasMany] ゴール [hasMany] アチーブメント
そのため、目標と成果を含む 1 つのドキュメントがあります。
従来のデータベースの場合、このクエリを作成できます
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/をご覧ください。
編集 私はそれらの「計算された」値を取得し、それらをプロパティとして目標に入れると思います。計算は非常に一般的になると思うので、実績を削除することはできず、ユーザーは「関係」を持つため、計算を単純に保ちます「My Stats」を取得するための目標と達成数
それにもかかわらず、RavenDbでそのクエリをどのように達成するか知りたいです
ありがとう!