У меня есть сборник документов под названием игры, которая выглядит как этотсумма число появлений на двух полях в MongoDB
{ winner: 'oakis', loser: 'test' },
{ winner: 'test', loser: 'oakis' }
Теперь я хотел бы MongoDB для вывода этого:
{ _id: 'oakis', wins: 1, losses: 1 },
{ _id: 'test', wins: 1, losses: 1 }
я был глядя на агрегацию, mapReduce и отличные без успеха. Я надеюсь, вы можете мне помочь!
EDIT:
У меня есть поле под названием «привязан», который является логическим, а также. Как я могу реализовать связанные игры также в результатах? (Существует также поле для каждого игрока в игре, player1 & player2) Результат должен быть: { _id: 'name', wins: 3, losses: 1, tied: 1 }
EDIT2:
решаемые это так!
db.games.aggregate([
{
$project: {
scores: [
{ name: '$winner', wins: { $literal: 1 }, losses: { $literal: 0 }, tied: { $literal: 0 } },
{ name: '$loser', wins: { $literal: 0 }, losses: { $literal: 1 }, tied: { $literal: 0 } },
{ name: '$player1', wins: { $literal: 0 }, losses: { $literal: 0 }, tied: { $cond: [ "$tied", 1, 0 ] } },
{ name: '$player2', wins: { $literal: 0 }, losses: { $literal: 0 }, tied: { $cond: [ "$tied", 1, 0 ] } }
]
}
},
{
$unwind: '$scores'
},
{
$group: {
_id: "$scores.name",
wins: { $sum: "$scores.wins" },
losses: { $sum: "$scores.losses" },
tied: { $sum: "$scores.tied" }
}
}
])
Спасибо, работает как шарм. –
У меня есть поле под названием «связанное», которое также является булевым. Как я могу реализовать связанные игры также в результатах? (Также есть поле для каждого игрока в игре, player1 и player2) Результат должен быть: '{_id: 'name', побед: 3, убытков, 1, tied: 1}' –