如何在Raven DB中查询嵌套集合中的项目?

Juk*_*nen 5 ravendb

我有以下2个实体模型:

      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; }
}
Run Code Online (Sandbox Code Playgroud)

而这些商店是我的Raven Db中的文件.我需要创建一个索引,我可以按名称查询产品,结果应该是仅包含匹配产品的部分商店文档.

所以具体来说我需要问Raven Db:哪些商店有包含这个文本的产品,以及每个商店中的产品是什么.

现在我可以制作一个索引,它给我的商店文档提供了匹配的产品,但它总是给我这些文件中的所有产品.

我想这是一个非常简单的回答,但对Raven Db和文档数据库来说是新手,我无法做到这一点.

这里有一个几乎重复的问题,但我仍然无法使查询/索引工作.

Aye*_*ien 6

骡子,预计,模型中的商店文档包含其所有产品,如果您要求商店文档,您将获得完整的商店文档.如果您只想获得所需内容的投影,可以使用以下索引:

from store in docs.Stores
from product in store.Products
select new { product.Name, product.Price, product.Created, store.Id }
Run Code Online (Sandbox Code Playgroud)

标记名称,价格,已创建和已存储的ID.

然后发出以下查询.

session.Query<StoreProduct>()
  .Where(s=>s.Name == name)
  .AsProjection<StoreProduct>()
  .ToList();
Run Code Online (Sandbox Code Playgroud)

这只会给你匹配的产品.