2012-07-24 69 views
1

做到這一點查詢我有這樣的事情在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/

編輯 我想我會得到這些「計算」的值,並將它們放在Goal中作爲屬性,因爲我認爲計算將會非常普遍,所以要保持簡單,因爲成績不能被刪除,並且用戶會有一個「關係「有目標和成果,以數量來獲得‘我的統計’

不過,我想知道你將如何實現這一目標的查詢中RavenDb

謝謝!

回答

0

您正在爲此僅加載一個文檔,因此這可能不是問題。 您不需要載入任何內容。

你可以在索引中做到這一點,然後從那裏加載存儲的字段,但我不認爲你需要這個,除非你的文檔是非常大大。