您可以通过为查询创建索引来做到这一点
public class GetOrdersByProductIndex: AbstractIndexCreationTask<Order,GetOrdersByProductIndex.Result>
{
public class Result
{
public string Product {get; set;}
}
public GetOrdersByProductIndex()
{
Map = orders => from order in orders
select new
{
Product = order.LineItems.Select(x => x.Product)
};
}
}
现在您可以使用此索引来获取您的订单。您的查询应如下所示
using(IDocumentSession session = docStore.OpenSession())
{
var orders = session.Query<GetOrdersByProductIndex.Result,GetOrdersByProductIndex>
.Where(x=>x.Product != "Apple")
.As<Order>()
.ToList()
}
请注意,默认情况下它只会返回 128 条记录(由于 ravendb 设置的限制),如果您的查询结果超过 128 条记录,您应该使用Take(recordsNeeded)
函数来获取数据。