mongoを開始したばかりで、すでにクエリに問題が発生し始めています。「externalTransaction」というコレクションがあり、この mysql クエリに相当するものを書きたいと考えています。
select transactionCode,
sum(amount) as totalSum,
count(amount) as totalCount
from externalTransaction
where transactioncode in ('aa','bb','cc')
group by sum(amount)
以下は私の試みです:
{
"collectionName": "externalTransaction",
sort: {transactionCode:-1},
query: {this._id: {$in:['aa','bb','cc']}},
mapReduce:{
'map': 'function(){
emit(this.transactionCode, this.amount);
}',
'reduce': 'function(key, values){
var result = {count: 0, sum: 0.0};
values.forEach(function(value) {
result.count++
result.sum += value.amount;
});
return result;
}',
'out' : 'sumAmount'
}
}
上記のクエリでは、次のような結果セットが得られます。
_id value.count value.sum
ct 2.0 NaN
bb 40.0 NaN
fg 71.0 NaN
fd 36.0 NaN
sd 5.0 NaN
as 4.0 NaN
aa 71.0 NaN
df 4.0 NaN
cc 10.0 NaN
バージョンのドキュメントから、2.0.6
私はまだ使用できないaggregation framework
ので、私のような単純なクエリをmongoで処理する方法. 読んでくれてありがとう、そして私の質問の些細なことを許してください。