下面是我试图实现的逻辑,但我发现很难找到使用 MongoDB/Node.js 应用程序的方法
Data: country, state, val1
我需要计算均值和标准。偏差使用下面的公式。我检查了其他堆栈溢出帖子,但我正在工作的标准开发公式不一样:
for each row -> group by country, state
mean = sum(val1)/count ->
for each row ->
deviation += Math.pow((val1 - mean), 2)
for each row -> group by country, state
std dev = Math.sqrt(dev/ count)
问题在于需要计算偏差的方式。看起来我需要在通过 Map reduce 计算偏差/ std dev 之前对 Mean 进行聚合,我找不到计算方法。谁能建议一种方法来做到这一点?
如果不可能,我们有没有办法在 mongodb 中发出类似于下面传统合并查询的更新语句?我将更新所有行的平均值,然后为偏差/标准差调用 Mapreduce。
merge into Tbl1 a using
(select b.country, b.state, sum(b.val1)/count(b.val1) as mean
from Tbl1 b
group by b.country, b.state) c
on (a.country = c.country and
a.state = c.state)
when matched
then update
set a.mean = c.mean
我对 nosql 和 nodejs 很陌生,如果你们能提出解决方案/替代方案,那就太好了。