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
的相关讨论