RavenDB Map/Reduce over属性是一个列表
本文关键字:一个 列表 Map Reduce over 属性 RavenDB | 更新日期: 2023-09-27 18:03:40
刚刚学习Map/Reduce,我错过了一个步骤。我读过这篇文章(RavenDB Map-Reduce示例使用。net客户端),但不能完全跳转到我需要的。
我有一个对象:
public class User : IIdentifiable
{
public User(string username)
{
Id = String.Format(@"users/{0}", username);
Favorites = new List<string>();
}
public IList<string> Favorites { get; protected set; }
public string Id { get; set; }
}
我想做的是获取Map/Reduce所有用户的收藏夹属性。像这样(但这显然不起作用):
Map = users => from user in users
from oil in user.Favorites
select new { OilId = oil, Count = 1 };
Reduce = results => from result in results
group result by result.OilId into g
select new { OilId = g.Key, Count = g.Sum(x => x.Count) };
例如,如果User1有收藏夹1、2、3,user2有收藏夹1、2,那么这应该返回{{OilId=3, Count =1}, {OilId=2, Count =2}, {OilId=1,Count =2}}
当前代码产生一个异常:System。NotSupportedException: Node not supported: Call
我觉得我已经很接近了。任何帮助吗?
我编写了一个复制您的代码的小应用程序,但我没有看到抛出异常。在这里查看我的代码:http://pastie.org/2308175。输出为
收藏:1,计数:2
Favorite: 2, Count: 2
收藏:3,计数:1
Map/Reduce只对跨文档进行聚合有用。对于这样的事情,您可以这样做:
session.Query<User>().Select(u=>u.Favorites).ToList()