【问题标题】:RavenDB Static Index field with Max() aggregation具有 Max() 聚合的 RavenDB 静态索引字段
【发布时间】:2014-04-11 17:19:22
【问题描述】:

我的文档有一个“评论”集合,我想索引“最后评论日期”。我已经为其他字段工作了静态定义的索引,所以我的索引没有问题。但是尝试添加这个新字段是行不通的。用它搜索时,我根本无法得到任何结果。

我尝试使用 Max() 聚合获取最大日期(请注意,我必须处理没有 cmets 的情况)

testlastcommented = doc.Comments.Count > 0 ? doc.Comments.Select(c => c.DateEntered).Max() : null

这抱怨 DynamicList 不支持 Max()。我可以发誓我使用 Max() 进行了一次迭代,但现在我无法让它工作。但是,即使它没有抛出错误,我也无法在该字段上进行查询。

然后我尝试使用 OrderByDescending/FirstOrDefault 作为 Max() 的替代方法

testlastcommented = doc.Comments.OrderByDescending(c => c.DateEntered).FirstOrDefault()

这个索引没有错误。但无论我做什么,就好像该字段在索引中不存在。我无法得到任何已知值的结果。

我分解并在文档中添加了一个计算得出的“LastCommented”属性并为其编制了索引。这显然可行,但我宁愿不必在文档中存储计算字段。

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    试试这个:

    testlastcommented = doc.Comments.Select(c => c.DateEntered)
                                    .OrderByDescending(x => x)
                                    .FirstOrDefault()
    

    【讨论】:

    • 不,索引错误:“OrderByDescending”没有重载需要 0 个参数。
    • 你运行的是什么版本的 RavenDB?
    • 我们开始...这行得通!但为什么??? doc.Comments.Select(c => c.DateEntered).OrderByDescending(c => c).FirstOrDefault()
    • 我现在明白为什么我的 firstordefault 不起作用了,没关系 :) 但是为什么不支持 Max()?
    • 稍后我会更多地使用它并为 H.R. 写一个错误报告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2011-11-16
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多