我有以下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; }
}
这些商店是我的Raven Db中的文件。 我需要创建一个索引,我可以通过Name查询产品,结果应该是只包含匹配产品的部分商店文档。
所以具体来说我需要问Raven Db:哪些商店有包含此文本的产品,以及每个商店中的产品是什么。
现在,我可以创建一个索引,为我提供包含匹配产品的商店文档,但它始终为我提供 ALL 这些文档中的产品。
我认为这是一个非常容易回答的问题,但对Raven Db和文档数据库来说是新手,我无法做到这一点。
这里已经有了几乎重复的question,但我仍然无法使查询/索引工作。
答案 0 :(得分: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();
这只会给你匹配的产品。