2011-08-02 100 views
5

我有以下2個實體模型:如何從Raven DB中的嵌套集合中查詢項目?

 public class Store : IModel 
     { 
     public string Id { get; set; } 
     public string Name { get; set; } 
     public string MainPageUrl { get; set; } 
     public ICollection<Product> Products { get; set; } 

     } 

     public class Product : IModel { 
      public string Id { get; set; } 
      public string Name { get; set; } 
      public double Price { get; set; } 
     public DateTime Created { get; set; } 
} 

這些店的,是我的烏鴉dB的文件。 我需要創建一個索引,我可以通過名稱查詢產品,結果應該是部分存儲僅包含匹配產品的文檔。

所以要具體,我需要問烏鴉DB本:哪些店有包含此文產品,什麼是這些產品在各店鋪。

現在我可以製作一個索引,它可以給我存儲具有匹配產品的文檔,但它總是會給我全部這些文檔中的產品。

我想這是一個真正容易回答但作爲新的烏鴉DB和文件數據庫我不能做這樣的工作。

有一個幾乎重複question已經在這裏,但我還是不能讓查詢/索引工作。

回答

6

騾子, ,預計,在模型中存儲文檔中包含其所有的產品,如果你所要求的店鋪文檔,你會得到充分商店文件。 如果你想只得到一個投射回剛剛的事情,你想要的,你可以用以下指標:

from store in docs.Stores 
from product in store.Products 
select new { product.Name, product.Price, product.Created, store.Id } 

馬克名稱,價格,創建和存儲的ID。

然後發出以下查詢。

session.Query<StoreProduct>() 
    .Where(s=>s.Name == name) 
    .AsProjection<StoreProduct>() 
    .ToList(); 

這會給你只有匹配的產品。

+0

,因爲我以爲,我是昨天我的問題太不精確。對不起,艾恩德,我很匆忙。我編輯了這個問題,以便它現在更具體。 –

+0

RavenDB論壇上有關「AsProjection」的討論https://groups.google.com/forum/#!topic/ravendb/PjRTcrLKcCE –