Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo:如何在一个集合中找到具有相同值的所有项对_Mongodb_Shell - Fatal编程技术网

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
            }
        }
    ]
)