我们有一个具有嵌套属性的对象,我们希望这些属性可以轻松搜索。这很容易实现,但我们也希望基于多个字段聚合信息。就域名而言,我们有多个交易,除卖家外,其具有相同的详细信息。我们需要将这些作为单个结果合并,并在下一页显示卖家选项。但是,我们仍然需要能够在初始页面上根据卖家进行过滤。
我们尝试了类似下面的内容,尝试在一行中收集多个卖家,但它包含重复项,并且索引的创建需要永远。
Map = deals => deals.Select(deal => new
{
Id = deal.ProductId,
deal.ContractLength,
Provider = deal.Provider.Id,
Amount = deal.Amount
});
Reduce = deals => deals.GroupBy(result => new
{
result.ProductId,
result.ContractLength,
result.Amount
}).Select(result => new
{
result.Key.ProductId,
result.Key.ContractLength,
Provider = result.Select(x => x.Provider).Distinct(),
result.Key.Amount
});
我不确定这是解决这个问题的最佳方法,但对Raven来说还是比较新的,并且在努力寻找创意。如果我们保持索引简单并在客户端进行分组,那么我们就不能保持分页一致。
有什么想法吗?
答案 0 :(得分:0)
您正在对文档ID进行分组。 deal.Id
,因此您永远不会在多个文档中实际生成减少量。
我不认为这是有意的。