Mongodb Mongo:如何在一个集合中找到具有相同值的所有项对
我想找到彼此拥有相同进球数和相同进球数的所有球队,得到球队和进球数 我的团队收藏如下:Mongodb Mongo:如何在一个集合中找到具有相同值的所有项对,mongodb,shell,Mongodb,Shell,我想找到彼此拥有相同进球数和相同进球数的所有球队,得到球队和进球数 我的团队收藏如下: { "_id" : ObjectId("5e4d95cdfa20e8e9822da6bf"), "team" : "Spain", "ranking" : 2, "games" : 6, "wins" : 5, "draws" : 0, "losses" : 1, "goalsFor" : 7, "goalsAgainst" : 2, "yellowCards" : 3, "redCards" : 0 } {
{ "_id" : ObjectId("5e4d95cdfa20e8e9822da6bf"), "team" : "Spain", "ranking" : 2, "games" : 6, "wins" : 5, "draws" : 0, "losses" : 1, "goalsFor" : 7, "goalsAgainst" : 2, "yellowCards" : 3, "redCards" : 0 }
{ "_id" : ObjectId("5e4d95cdfa20e8e9822da6c0"), "team" : "Brazil", "ranking" : 1, "games" : 5, "wins" : 3, "draws" : 1, "losses" : 1, "goalsFor" : 9, "goalsAgainst" : 4, "yellowCards" : 7, "redCards" : 2 }
{ "_id" : ObjectId("5e4d95cdfa20e8e9822da6c1"), "team" : "Portugal", "ranking" : 3, "games" : 4, "wins" : 1, "draws" : 2, "losses" : 1, "goalsFor" : 7, "goalsAgainst" : 1, "yellowCards" : 8, "redCards" : 1 }
{ "_id" : ObjectId("5e4d95cdfa20e8e9822da6c2"), "team" : "Italy", "ranking" : 5, "games" : 3, "wins" : 0, "draws" : 2, "losses" : 1, "goalsFor" : 4, "goalsAgainst" : 5, "yellowCards" : 5, "redCards" : 0 }
尝试此聚合管道:
db.collection.aggregate(
[
{
$group: {
_id: {
goals_for: '$goalsFor',
goals_against: '$goalsAgainst'
},
teams: {
$push: '$team'
}
}
},
{
$match: {
$expr: { $gte: [{ $size: '$teams' }, 2] }
}
},
{
$project: {
teamPair: '$teams',
goalsFor: '$_id.goals_for',
goalsAgainst: '$_id.goals_against',
_id: 0
}
}
]
)
试试这个聚合管道:
db.collection.aggregate(
[
{
$group: {
_id: {
goals_for: '$goalsFor',
goals_against: '$goalsAgainst'
},
teams: {
$push: '$team'
}
}
},
{
$match: {
$expr: { $gte: [{ $size: '$teams' }, 2] }
}
},
{
$project: {
teamPair: '$teams',
goalsFor: '$_id.goals_for',
goalsAgainst: '$_id.goals_against',
_id: 0
}
}
]
)