Node.js monogdb使用count分组后获得获胜百分比
我有数据Node.js monogdb使用count分组后获得获胜百分比,node.js,mongodb,express,mongoose,mongojs,Node.js,Mongodb,Express,Mongoose,Mongojs,我有数据 {"id" :1,"win":100}, {"id" :1,"win":150}, {"id" :1,"win":10}, {"id" :1,"win":0}, {"id" :2,"win":100}, {"id" :2,"win":0}, {"id" :3,"win":100}, {"id" :3,"win":200}, 我需要找到每个id的获胜百分比; 预期产量 id: 1 winper:75 id: 2 winper:50 id: 1 winper:100 to
{"id" :1,"win":100},
{"id" :1,"win":150},
{"id" :1,"win":10},
{"id" :1,"win":0},
{"id" :2,"win":100},
{"id" :2,"win":0},
{"id" :3,"win":100},
{"id" :3,"win":200},
我需要找到每个id的获胜百分比;
预期产量
id: 1 winper:75
id: 2 winper:50
id: 1 winper:100
totalwin is no. of greatethan zero win
totalnotwin is no. equal to zero win
我得到了下面的问题
db.winn.aggregate([
{
$group: { _id: "$id",
totalnotwon: {
$sum:
{ $cond: [ { $lte: [ "$win", 0 ] }, 1, 0] }
}
,
totalwin: {
$sum:
{ $cond: [ { $gt: [ "$win", 0 ] }, 1, 0] }
}
}
}
],function (err, result) {
console.log(result);
res.json(result);
});
}))
我得到了结果
我是totlwon totlanotwon
1 3 1
2 1 1
3200
我需要计算一下获胜的可能性
预期
id totlwon totlanotwon%
1 3 1 75
2 1 1 50
3200100
win%逻辑(100/(totlwon+totalnotwon))*totalwon请尝试此查询,它可能会根据您的公式给出结果:
(100/(totalwon+totalnotwon))*totalwon
查询:
db.demo.aggregate([
{
$group: {
_id: '$id',
total: { $sum: '$win' },
totalnotwon: {
$sum: { $cond: [{ $lte: ['$win', 0] }, 1, 0] },
},
totalwon: {
$sum: { $cond: [{ $gt: ['$win', 0] }, 1, 0] },
},
total: { $sum: NumberInt(1) },
},
},
{
$project: {
result: {
$floor:{$multiply:[{ $divide:[100,'$total']},'$totalwon']}
},
},
},
]);
我正在使用Mongojs模块,其显示的错误NumberPrint未声明,请通过删除NumberPrint来尝试“total:{$sum:1}”,为了更准确,我添加了NumberPrint。获取空响应是使用节点api调用此函数和quey。poject似乎无法访问Lawin colunmsresult没有id$floor:{$multiply:[{$divide:[100,$total']},$totalwon']}这给了我答案,非常感谢