Mongodb mongo中的问题过滤内部数组

Mongodb mongo中的问题过滤内部数组,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,基本上,我试图通过内部数组中的给定字段进行过滤 "_id" : ObjectId("5c5f410990663d5ab5ee3871"), "Year" : 1986, "Datetime" : "29 Jun 1986 - 12:00 ", "Stage" : "Final", "Stadium" : "Estadio Azteca", "City" : "Mexico City ", "Home Team Name" : "Argentina", "Home Team Goals" : 3,

基本上,我试图通过内部数组中的给定字段进行过滤

"_id" : ObjectId("5c5f410990663d5ab5ee3871"),
"Year" : 1986,
"Datetime" : "29 Jun 1986 - 12:00 ",
"Stage" : "Final",
"Stadium" : "Estadio Azteca",
"City" : "Mexico City ",
"Home Team Name" : "Argentina",
"Home Team Goals" : 3,
"Away Team Goals" : 2,
"Away Team Name" : "Germany FR",
"Win conditions" : "NA",
"Attendance" : 114600,
"Half-time Home Goals" : 1,
"Half-time Away Goals" : 0,
"Referee" : "ARPPI FILHO Romualdo ",
"Referee_Nationality" : "BRA",
"Assistant 1" : "FREDRIKSSON Erik ",
"Assistant_1_Nationality" : "SWE",
"Assistant 2" : "ULLOA MORERA Berny ",
"Assistant_2_Nationality" : "CRC",
"RoundID" : 3467,
"MatchID" : 393,
"Home Team Initials" : "ARG",
"Away Team Initials" : "FRG",
"MatchPlayedBy" : [
    {
        "_id" : ObjectId("5c5f2a4c90663d5ab5edd521"),
        "RoundID" : 3467,
        "MatchID" : 393,
        "Team Initials" : "FRG",
        "Coach Name" : "BECKENBAUER Franz (GER)",
        "Line-up" : "S",
        "Shirt Number" : 1,
        "Player Name" : "Harald SCHUMACHER",
        "Position" : "GK",
        "Event" : "NA"
    },
    {
        "_id" : ObjectId("5c5f2a4c90663d5ab5edd523"),
        "RoundID" : 3467,
        "MatchID" : 393,
        "Team Initials" : "FRG",
        "Coach Name" : "BECKENBAUER Franz (GER)",
        "Line-up" : "S",
        "Shirt Number" : 4,
        "Player Name" : "Karl Heinz FOERSTER",
        "Position" : "NA",
        "Event" : "NA"
    },
    {

结果应该是来自阿根廷国家队的球员,如果你想对嵌套数组应用过滤条件,请尝试:

db.WorldCupFinals.aggregate([
    { $match: { Year: 2014 } },
    {
        $addFields: {
            MatchPlayedBy: { $filter: { input: "$MatchPlayedBy", cond: { $eq: [ "$$this.Team Initials", "ARG" ] } } }
        }
    }
])
将仅使用筛选值覆盖现有数组

db.WorldCupFinals.aggregate([
    { $match: { Year: 2014 } },
    {
        $addFields: {
            MatchPlayedBy: { $filter: { input: "$MatchPlayedBy", cond: { $eq: [ "$$this.Team Initials", "ARG" ] } } }
        }
    }
])