以下は私が実装しようとしているロジックですが、MongoDB/Node.js アプリで方法を理解するのは本当に難しいと感じています
Data: country, state, val1
平均と標準偏差を計算する必要があります。以下の式を使用して偏差。他のスタック オーバーフローの投稿を確認しましたが、私が作業している std dev 式は同じではありません。
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 を使用して偏差/標準偏差を計算する前に、Mean の集計が必要なようですが、計算方法が見つかりません。誰でもこれを行う方法を提案できますか?
それが不可能な場合、以下の従来のマージ クエリと同様に、mongodb で update ステートメントを発行する方法はありますか? すべての行の平均値を更新し、後で偏差/標準偏差に対して 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にかなり慣れていないので、解決策/代替案を提案していただければ幸いです。