0
下面是我想實現的邏輯,但我發現它真的很難想出一個辦法用的MongoDB/Node.js的應用MongoDB的MapReduce的聚集物溶液或合併到替代
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計算偏差/標準偏差,我找不到計算方法。任何人都可以提出一種方法來做到這一點
如果這是不可能的,我們有辦法在mongodb中發佈類似於下面的傳統合並查詢的更新語句嗎?我將更新所有行的平均值,並稍後調用Mapreduce作爲偏差/ std開發。
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的新手,如果你們可以提出解決方案/備選方案,那將是非常好的。
再次感謝約翰尼!並行計算算法和github示例只產生與我尋找的傳統std dev邏輯相同的結果! – user1549605 2013-03-03 19:57:24