MongoDB, отображающий две находки в одной строке

Я пытаюсь отобразить результаты двух запросов mongodb:

db.games.aggregate([{$match:{player_id:12345}},{"$group" : {_id:"$player_id", count:{$sum:1}}}])`
db.games.aggregate([{$match:{player_id:6789}},{"$group" : {_id:"$player_id", count:{$sum:1}}}])

Каждый запрос найдет количество игр, в которых играл каждый игрок, но мне нужно сравнить количество игр между ними в одном запросе.

Вывод будет похож на:

{"PlayerA":37,"PlayerB":98}

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
0
33
1

Ответы 1

Оператор запроса агрегации $match определяет, какие документы будут найдены в базе данных, и может использовать все обычные операторы поисковых запросов монго. Ваш $group уже правильно суммируется с $player_id, поэтому вы можете обновить свой $match, чтобы включить оба идентификатора, и ваш конвейер должен работать:

db.games.aggregate([{$match:{player_id: {$in: [12345, 6789]}},{"$group" : {_id:"$player_id", count:{$sum:1}}}])

Другие вопросы по теме