1

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でそのクエリをどのように達成するか知りたいです

ありがとう!

4

1 に答える 1

0

このためにロードしているドキュメントは1つだけなので、問題にはならない可能性があります。他に何もロードしていません。

インデックスでこれを実行し、そこから保存されたフィールドをロードできますが、ドキュメントが非常に大きくない限り、これは必要ないと思います。

于 2012-07-25T12:05:51.740 に答える