我的mongoDB集合中包含以下文档。包含数组的文档的MongoDB组
{
"_id" : ObjectId("51d90c3746503d6ab5933b88"),
"scorearray" : [
{
"score" : 0.0
},
{
"score" : 7.0
}
],
"player" : "Arod"
}
/* 1 */
{
"_id" : ObjectId("51d90c0d46503d6ab5933b86"),
"scorearray" : [
{
"score" : 2.0
},
{
"score" : 1.0
},
{
"score" : 5.0
}],
"player" : "Martini"
}
我试图让每个球员的最高分,我有一个查询,如下,但它给了我只是一个球员,即AROD 7.0,我既需要AROD 7.0马尔蒂尼5.0在我的查询结果。
有人可以请指导我如何修改下面的查询。任何指导将不胜感激。
db.playerscorecollection.aggregate([
{$project:{_id:0,player:1, "scorearray.score":1}},
{$unwind:"$scorearray"},
{$sort:{"scorearray.score":-1}},
{$limit:1}
]);
感谢您的出色答卷,我才意识到,我需要venuealso添加到阵列的得分,如果我需要得到球员和场地的比赛在也打出了最高分是什么? – user1965449
谢谢你的回答,我只是意识到我需要为比分阵列添加场地,我需要获得球员的最高分和比赛的场地吗?我试图为该组添加场地,但是我收到一个错误,指出“组合场地'必须定义为对象内部的表达式”。你能帮忙吗? – user1965449
谢谢你提出的第二个问题,我使用以下更简单的方法实现它。现在,我需要指导将它转换为使用Java DB驱动程序检索数据的Java程序。任何指导将非常感激。 db.playerscorecollection.aggregate {[$ unwind:“$ scorearray”}, {$ group:{_id:{player:'$ player,venue:'$ venue'},maxScore:{$ max:“$ scorearray .score“}}} ]); – user1965449