我有以下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和文档数据库来说是新手,我无法做到这一点.
这里有一个几乎重复的问题,但我仍然无法使查询/索引工作.
骡子,预计,模型中的商店文档包含其所有产品,如果您要求商店文档,您将获得完整的商店文档.如果您只想获得所需内容的投影,可以使用以下索引:
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)
这只会给你匹配的产品.