从我的MongoDB集合中获取最大值

时间:2017-12-04 03:05:46

标签: mongodb

我需要从我的数据结构中返回具有最多总ipout的player_id。这是我在伪代码中需要做的事情:

1. Add together all ipouts for each player
2. Grab the max ipouts
3. Display the player_id of the one with max ipouts

到目前为止,我的第一名是正确的。这会正确列出每个玩家ID及其ipout总数。

db.pitching.aggregate([ 
    { $group: 
        { _id: "$player_id", ipouts: 
            { $sum: "$ipouts" }
        }
     }
]);

现在下一步是获得最大值。这就是我挣扎的地方:

db.pitching.aggregate([ 
    { $group: 
        { _id: "$player_id", ipouts: 
            { $sum: "$ipouts" }
        }
    },
    { $group: 
        { _id: "$_id" , max: { $max: "$ipouts"} }
    }
]);

我检查过的其他一些问题不起作用,因为我知道我需要使用聚合,这意味着我无法进行排序/限制(1)。我也尝试将_id设置为null,这也不起作用。此代码返回一个空数组(如果我添加toArray(),我可以看到空括号)。

如何获取具有最大ipouts的对象的PlayerID?

1 个答案:

答案 0 :(得分:2)

通过$sort$limit管道运算符,Aggregate有自己的排序和限制版本。所以你可以这样做:

db.pitching.aggregate([ 
    { $group: 
        { _id: "$player_id", ipouts: 
            { $sum: "$ipouts" }
        }
    },
    { $sort: {ipouts: -1 } },
    { $limit: 1 }
]);