下面是我的json文件中的文档结构。我想显示每个获胜者的名字和姓氏,按获胜年份分组。
答案 0 :(得分:0)
应该执行以下操作:
db.winners.aggregate([{
$unwind: "$prizes"
},
{
$group: {
_id: {
name: {
$concat: [
"$firstname",
" ",
"$surname"
]
}
},
years: {
$push: "$prizes.year"
}
}
},
{
$addFields: {
name: "$_id.name"
}
},
{
$project: {
_id: 0
}
}
])
我们基本上首先需要将prizes
展平,然后按连接的firstname
和surname
进行分组,然后按years
。
Rest只是为了让我们能显示名称而不是_id
等。
答案 1 :(得分:0)
如果要获得同一年的所有获奖者,可以执行以下操作:
db.winners.find({year:1},(err, winners)=>{
let winnersList = [];
winners.forEach(winner =>{
winnersList.push(winner.firstname, winner.surname);
//Or watever you wish to do with it.
}
}
简便的方法是从您想要的年份中获取所有对象,然后使用所需的东西,仅是我个人的看法。希望对您有所帮助。