【发布时间】:2013-05-29 15:09:26
【问题描述】:
我的收藏是这样的
{
"bet_session_id": ObjectId("51a60cba6ef215d019000299"),
"date": ISODate("2013-05-29T14:13:14.572Z"),
"player_items": [
{
"chip": NumberInt(1),
"item": "x14",
"ratio": NumberInt(35),
"total_win": NumberInt(0)
},
{
"chip": NumberInt(1),
"item": "x15",
"ratio": NumberInt(35),
"total_win": NumberInt(36)
},
{
"chip": NumberInt(1),
"item": "121511141013",
"ratio": NumberInt(5),
"total_win": NumberInt(6)
},
],
"user_id": "7876010",
}
,
{
"bet_session_id": ObjectId("51a60cba6ef215d019000299"),
"date": ISODate("2013-05-29T14:13:14.572Z"),
"player_items": [
{
"chip": NumberInt(1),
"item": "x14",
"ratio": NumberInt(35),
"total_win": NumberInt(0)
},
{
"chip": NumberInt(1),
"item": "x15",
"ratio": NumberInt(35),
"total_win": NumberInt(36)
},
{
"chip": NumberInt(1),
"item": "121511141013",
"ratio": NumberInt(5),
"total_win": NumberInt(6)
},
{
"chip": NumberInt(1),
"item": "12151114",
"ratio": NumberInt(8),
"total_win": NumberInt(9)
},
{
"chip": NumberInt(1),
"item": "1514",
"ratio": NumberInt(17),
"total_win": NumberInt(18)
},
{
"chip": NumberInt(1),
"item": "1215",
"ratio": NumberInt(17),
"total_win": NumberInt(18)
},
{
"chip": NumberInt(1),
"item": "151814171316",
"ratio": NumberInt(5),
"total_win": NumberInt(6)
},
{
"chip": NumberInt(1),
"item": "151413",
"ratio": NumberInt(11),
"total_win": NumberInt(12)
},
{
"chip": NumberInt(1),
"item": "15181417",
"ratio": NumberInt(8),
"total_win": NumberInt(9)
}
],
"user_id": "9034906623",
}
使用上面的数据 我需要计算玩家总胜数
我的 map reduce 函数在这里:
var mapBetPlayWinStats = function() {
for (i=0; i<this.player_items.length; i++ ) emit( this.player_items[i].item, this.player_items[i].total_win )};
var reduceBetPlayWinStats = "function(item,values) { var sum = 0; sum += values; return sum; }"
db.bet_results.mapReduce(mapBetPlayWinStats, reduceBetPlayWinStats, {out: "bet_number_play_win_stats"});
RESULTS:
{
"_id": "red",
"value": "20,50,20,NumberLong(20),NumberLong(20),100"
}
{
"_id": "odd",
"value": "NumberLong(0),NumberLong(0)"
}
{
"_id": "even",
"value": "0,20,NumberLong(20),NumberLong(20)"
}
我猜我的 map reduce 函数是正确的,但我需要将值项求和为整数。 我还尝试了 parseInt() 和 new NumberLong() 函数。
【问题讨论】:
-
我不确定我是否理解,您的结果中的“红色”、“奇数”和“偶数”来自哪里?你想要的结果是什么?按项目分组的总获胜次数?
-
我猜这些来自 OP 的原始数据集?反正这是我的猜测 - 跟踪投注 + 'red'、'odd'、'even' ==> 轮盘赌? :)
-
@Joackim,item 可以是 "item": "x14" 或 "item": "red" 没关系,这只是一个示例。我需要按项目分组。
标签: mongodb mongodb-query