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

Ravendb 如何在Raven DB中查询嵌套集合中的项?,ravendb,Ravendb,我有以下两种实体模型: 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 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; }
}
公共类存储:IModel
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共字符串MainPageUrl{get;set;}
公共ICollection产品{get;set;}
}
公共类产品:IModel{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共双价{get;set;}
已创建公共日期时间{get;set;}
}
在我的Raven数据库中有一个文档。 我需要创建一个索引,在这里我可以按名称查询产品,结果应该是只包含匹配产品的部分存储文档

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

现在,我可以制作一个索引,它为我存储文档和匹配的产品,但它总是为我提供这些文档中的所有产品

我想这是一个很容易回答的问题,但由于我对Raven Db和文档数据库还不熟悉,所以我无法做到这一点

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

Mule, 这是预期的,模型中的存储文档包含其所有产品,如果您需要存储文档,您将获得完整的存储文档。 如果您只想得到您想要的东西的投影,可以使用以下索引:

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();
session.Query()
.其中(s=>s.Name==Name)
.AsProjection()
.ToList();

那只会给你匹配的产品。

正如我所想,我昨天的问题太不精确了。对不起,艾恩德,我赶时间。我对这个问题进行了编辑,以便现在更加具体。RavenDB论坛上关于
AsProjection
的相关讨论