map/reduce delete lock Revision 326331346166 (Fri Jul 03 2009 at 13:49) - Diff Link to this snippet: https://friendpaste.com/1sESq3KI7MccphOzGIXudT Embed: manni perldoc borland colorful default murphy trac fruity autumn bw emacs pastie friendly Show line numbers Wrap lines 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758function(doc) { if (doc.Transactions) { for each (var txn in doc.Transactions) { emit(txn.Date.substr(0,8)+'01', [txn.Account, txn.Amount]); } }}function (keys, values, rereduce) { if (rereduce) { // We could do this check in the loop below in rereduce but better to know quickly for (j in values) { if (values[j] == null) { return null; } } } var accounts = {}; if (rereduce) { for (j in values) { var intermediate_results = values[j]; for (i in intermediate_results) { var key = intermediate_results[i].period + '-' + intermediate_results[i].account; if (accounts[key] !== undefined) { accounts[key].amount += intermediate_results[i].amount; } else { accounts[key] = intermediate_results[i]; }} } } else { for (i in values) { // <date in key> + '-' + <account number> var key = keys[i][0] + '-' + values[i][0]; //log('Reduce Key:' + key) if (accounts[key] !== undefined) { // Sum up the amount accounts[key].amount += values[i][1]; } else { accounts[key] = { amount : values[i][1], period : keys[i][0], account : values[i][0]}; }} } var result = []; for (n in accounts) { result.push(accounts[n]); } return result; }