我有很多制造商,每个制造商都生产几种产品。制造商可以有字符串标签,我想通过他们的制造商标签搜索产品(这样标签是产品从制造商继承的)。
这样做的一种方法是创建一个索引,在该TransformResults
部分中,将制造商的标签添加到每个产品中。
from product in results
select new {
...,
Tags = Database.Load("manufacturers/"+ product.ManufacturerId).Tags
}
但我似乎无法查询它:
this.Query<T>("TaggedProducts").Where(s => s.Tags.Any(tag => tag=="reliable"));
因为标签没有被索引。我正在使用 RavenDB Studio。
这是地图:
from product in docs.Products
select new {
product.Id,
product.ManufacturerId
}
我不清楚我是否需要定义一个字段,我找不到任何解释这一点的文档。
这些是类:
class Manufacturer
{
public int Id {get; set;}
public List<string> Tags {get; set;}
}
class Product
{
public int ManufacturerId {get; set;}
public int Id {get; set;}
}
请注意,如果可能的话,我会尽量避免在 Product 类中添加标签字段,因为这会给人一种错误的印象,即标签可以在故事中设置。