我正在使用RethinkDB
Java驱动程序,并希望为特定字段的每个值计算平均偏差.
所以,我写了这段代码:
public static ReqlExpr avgdev(ReqlExpr expr, String field) {
return expr.map(
entry -> entry.g("parent_document").g(field).sub(expr.avg(row -> row.g("documents").g(field)))
);
}
如您所见,平均值是多次计算的.对于这样的计算,RethinkDB会自动确保平均值只计算一次,还是应该手动计算一次平均值然后用它来计算偏差?
我问这个是因为我使用的设计模式在这种情况下可能会发生很大变化.
最佳答案 RethinkDB现在不进行任何类型的公共子表达式消除.我建议用do来分解公共子表达式(所以像expr.avg(…).do(avg – > expr.map(…))).