我创建了以下索引来尝试获取下一个 ItemNumber。ItemNumber 不是 raven 标识符,因此它是由应用程序分配的。如果数据库中没有任何项目,则索引应该做的是返回 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
};
}
}