首页 > 解决方案 > 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}

标签: mongodbaggregation-framework

解决方案


$match聚合查询运算符确定将从数据库中找到哪些文档,并且可以使用所有普通的 mongo 搜索查询运算符。您$group已经通过 正确求和$player_id,因此您可以更新您$match以包含两个 id,并且您的管道应该可以工作:

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


推荐阅读