2011-08-02 6 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内の文書です。 名前で商品を照会することができるインデックスを作成する必要があり、その結果は一致する商品のみを含む部分ストア文書になります。

具体的には、どの店舗にこのテキストを含む商品があり、どの店舗にその商品があるのか​​をRaven Dbに尋ねる必要があります。

これで、店舗文書に一致する商品が表示されるようになりましたが、いつもALLと表示されます。

これは本当に簡単な答えですが、Raven Dbとドキュメントデータベースには新しく、私はこの作業を行うことができませんでした。

questionはすでに重複していますが、依然としてクエリ/インデックスを作成できませんでした。

答えて

6

期待されているミュール、 、モデル内のストア文書は、すべての製品が含まれており、あなたはストアのドキュメントを求めているならば、あなたはフルストア文書を取得します。 あなたはちょうどあなたがしたいだけのもののために逆投影を取得したい場合は、以下の指標を使用することができます

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

マーク名、価格、保存されたとして作成され、同上。

次に、次のクエリを発行します。

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

これは、一致する商品のみを表示します。

+0

私が思ったように、私は昨日私の質問であまりにも不正確でした。申し訳ありませんが、私は急いでいました。私は質問を編集して、それがより具体的になるようにしました。 –

+0

RavenDBフォーラムでの 'AsProjection'の関連する議論https://groups.google.com/forum/#!topic/ravendb/PjRTcrLKcCE –

関連する問題