#arrays #mongodb #mongodb-query
Вопрос:
_id: 60bb738d5b55f53bcb8743cf,
game: 'dota',
region: 'EU',
tournamentName: 'Blast Pro Serie',
status: 'open',
teams: [
{
teamId: 1,
teamTag: 'Navi',
group: 'groupA',
wins: 0,
loses: 0,
score: 0
},
{
teamId: 2,
teamTag: 'Secret',
group: 'groupA',
wins: 0,
loses: 0,
score: 0
},
{
teamId: 3,
teamTag: 'VP',
group: 'groupA',
wins: 0,
loses: 0,
score: 0
}
],
id: 0
}
У меня есть объект с множеством команд.
Я хочу выполнить некоторые операции и переписать этот массив или без переписывания, используя $inc для обновления оценки для команд.
Но есть некоторые проблемы, не могу понять, как переписать массив с помощью mongodb.
Пример моего кода:
const tournamentId = req.params.tournamentid;
const loserId = req.body.loserId;
const winnerId = req.body.winnerId;
dbTournaments.find().toArray()
.then(results => {
let tournament = results[tournamentId];
let tournamentTeams = tournament.teams;
let loser = tournamentTeams.filter(item => item.teamId === loserId);
let winner = tournamentTeams.filter(item => item.teamId === winnerId);
winner[0].wins ;
loser[0].loses ;
winner[0].score =3;
return tournamentTeams
})
.then(result =>{
dbTournaments.updateOne({"id":tournamentId},{$set: {'teams.$[]':result}})
res.status(200).json({ok:true,status:200,message:'Success'})
})
.catch(console.error);