RavenDB索引获取文档属性的最大值不起作用?

时间:2013-06-06 04:03:29

标签: .net indexing ravendb

我创建了以下索引以尝试获取下一个ItemNumber。 ItemNumber不是乌鸦标识符,因此它由应用程序分配。如果数据库中没有任何项目,索引应该返回0。否则它应该返回Max + 1.它几乎可以工作,但有一个明显的问题。而不是返回max + 1,它返回max + 2.最终结果是ItemNumbers跳过其他所有数字。如果我删除' + 1',它的行为就像它应该的那样,并返回现有的最大值,但这不是我需要的。我有什么不对的吗?

public class NextItemNumber : AbstractIndexCreationTask<Item, NextItemNumber.Result>
{
    public class Result
    {
        public long ItemNumber { get; set; }
    }

    public NextItemNumber()
    {
        Map = items => from item in items
                          select new
                          {
                              // item.ItemNumber is a string
                              ItemNumber = Convert.ToInt64(item.ItemNumber)
                          };

        Reduce = results => from result in results
                            group result by 0 into g
                            select new
                            {
                                ItemNumber = g.Max(x => x.ItemNumber) + 1
                            };
    }
}

1 个答案:

答案 0 :(得分:1)

在reduce中,你需要这样的东西:

                            ItemNumber = g.Max(x=>x.ItemNumber )