【发布时间】:2017-07-25 20:08:45
【问题描述】:
我正在寻找将足球比赛汇总到汇总表中以显示资格表的最佳方式。我的数据如下所示:
/* 1 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f4fb"),
"home" : ObjectId("596fe03ad496e047d6314bf7"),
"away" : ObjectId("596fe03ad496e047d6314be8"),
"homeGoals" : 4,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-28T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f4fd"),
"home" : ObjectId("596fe03ad496e047d6314be9"),
"away" : ObjectId("596fe03ad496e047d6314c0d"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-29T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 3 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f502"),
"home" : ObjectId("596fe03ad496e047d6314bed"),
"away" : ObjectId("596fe03ad496e047d6314c0f"),
"homeGoals" : 4,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-05-18T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 4 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f4fe"),
"home" : ObjectId("596fe03ad496e047d6314c13"),
"away" : ObjectId("596fe03ad496e047d6314bee"),
"homeGoals" : 1,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-29T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 5 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f503"),
"home" : ObjectId("596fe03ad496e047d6314c1c"),
"away" : ObjectId("596fe03ad496e047d6314be9"),
"homeGoals" : 1,
"awayGoals" : 3,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-03T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 6 */
{
"_id" : ObjectId("5976b6e0f42aa4d69585f4fa"),
"home" : ObjectId("596fe03ad496e047d6314c30"),
"away" : ObjectId("596fe03ad496e047d6314bfe"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-28T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 7 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f4ff"),
"home" : ObjectId("596fe03ad496e047d6314c21"),
"away" : ObjectId("596fe03ad496e047d6314bf4"),
"homeGoals" : 0,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-29T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 8 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f4fc"),
"home" : ObjectId("596fe03ad496e047d6314bdb"),
"away" : ObjectId("596fe03ad496e047d6314bf6"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-28T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 9 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f500"),
"home" : ObjectId("596fe03ad496e047d6314c2d"),
"away" : ObjectId("596fe03ad496e047d6314be0"),
"homeGoals" : 3,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-01-29T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 10 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f504"),
"home" : ObjectId("596fe03ad496e047d6314bf4"),
"away" : ObjectId("596fe03ad496e047d6314c30"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-03T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 11 */
{
"_id" : ObjectId("5976b6e1f42aa4d69585f501"),
"home" : ObjectId("596fe03ad496e047d6314bfa"),
"away" : ObjectId("596fe03ad496e047d6314c1c"),
"homeGoals" : 1,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b3"),
"date" : ISODate("2017-03-25T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 12 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f505"),
"home" : ObjectId("596fe03ad496e047d6314be0"),
"away" : ObjectId("596fe03ad496e047d6314c13"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-05T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 13 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f506"),
"home" : ObjectId("596fe03ad496e047d6314be0"),
"away" : ObjectId("596fe03ad496e047d6314bee"),
"homeGoals" : 2,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-11T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 14 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f507"),
"home" : ObjectId("596fe03ad496e047d6314c13"),
"away" : ObjectId("596fe03ad496e047d6314c30"),
"homeGoals" : 3,
"awayGoals" : 4,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 15 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50c"),
"home" : ObjectId("596fe03ad496e047d6314be8"),
"away" : ObjectId("596fe03ad496e047d6314bfa"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-04T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 16 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f511"),
"home" : ObjectId("596fe03ad496e047d6314be0"),
"away" : ObjectId("596fe03ad496e047d6314bf4"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-23T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 17 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f516"),
"home" : ObjectId("596fe03ad496e047d6314be9"),
"away" : ObjectId("596fe03ad496e047d6314bfa"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 18 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50a"),
"home" : ObjectId("596fe03ad496e047d6314c13"),
"away" : ObjectId("596fe03ad496e047d6314c0f"),
"homeGoals" : 4,
"awayGoals" : 3,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-25T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 19 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50b"),
"home" : ObjectId("596fe03ad496e047d6314bf7"),
"away" : ObjectId("596fe03ad496e047d6314bdb"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-04T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 20 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51b"),
"home" : ObjectId("596fe03ad496e047d6314be8"),
"away" : ObjectId("596fe03ad496e047d6314bf6"),
"homeGoals" : 2,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-05T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 21 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50f"),
"home" : ObjectId("596fe03ad496e047d6314bee"),
"away" : ObjectId("596fe03ad496e047d6314c1c"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-13T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 22 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f520"),
"home" : ObjectId("596fe03ad496e047d6314bfa"),
"away" : ObjectId("596fe03ad496e047d6314bf7"),
"homeGoals" : 2,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-19T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 23 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f514"),
"home" : ObjectId("596fe03ad496e047d6314bfe"),
"away" : ObjectId("596fe03ad496e047d6314c21"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-05T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 24 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f510"),
"home" : ObjectId("596fe03ad496e047d6314c0d"),
"away" : ObjectId("596fe03ad496e047d6314be0"),
"homeGoals" : 0,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-19T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 25 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f519"),
"home" : ObjectId("596fe03ad496e047d6314bf6"),
"away" : ObjectId("596fe03ad496e047d6314c30"),
"homeGoals" : 1,
"awayGoals" : 3,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-25T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 26 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f515"),
"home" : ObjectId("596fe03ad496e047d6314c2d"),
"away" : ObjectId("596fe03ad496e047d6314c0f"),
"homeGoals" : 1,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-10T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 27 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51e"),
"home" : ObjectId("596fe03ad496e047d6314c21"),
"away" : ObjectId("596fe03ad496e047d6314be8"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 28 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51a"),
"home" : ObjectId("596fe03ad496e047d6314c2d"),
"away" : ObjectId("596fe03ad496e047d6314bfe"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-27T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 29 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51f"),
"home" : ObjectId("596fe03ad496e047d6314c30"),
"away" : ObjectId("596fe03ad496e047d6314bdb"),
"homeGoals" : 2,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-17T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 30 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f508"),
"home" : ObjectId("596fe03ad496e047d6314bfe"),
"away" : ObjectId("596fe03ad496e047d6314c13"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-19T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 31 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50d"),
"home" : ObjectId("596fe03ad496e047d6314bee"),
"away" : ObjectId("596fe03ad496e047d6314bf7"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-06T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 32 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f512"),
"home" : ObjectId("596fe03ad496e047d6314c21"),
"away" : ObjectId("596fe03ad496e047d6314bfa"),
"homeGoals" : 0,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-26T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 33 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f517"),
"home" : ObjectId("596fe03ad496e047d6314c0f"),
"away" : ObjectId("596fe03ad496e047d6314c21"),
"homeGoals" : 4,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-18T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 34 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51c"),
"home" : ObjectId("596fe03ad496e047d6314c0f"),
"away" : ObjectId("596fe03ad496e047d6314bdb"),
"homeGoals" : 2,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-02-04T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 35 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f521"),
"home" : ObjectId("596fe03ad496e047d6314bf7"),
"away" : ObjectId("596fe03ad496e047d6314be9"),
"homeGoals" : 2,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-24T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 36 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f509"),
"home" : ObjectId("596fe03ad496e047d6314bee"),
"away" : ObjectId("596fe03ad496e047d6314c2d"),
"homeGoals" : 1,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-20T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 37 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f50e"),
"home" : ObjectId("596fe03ad496e047d6314bf7"),
"away" : ObjectId("596fe03ad496e047d6314bfe"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b5"),
"date" : ISODate("2017-02-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 38 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f513"),
"home" : ObjectId("596fe03ad496e047d6314c0f"),
"away" : ObjectId("596fe03ad496e047d6314c0d"),
"homeGoals" : 2,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-04T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 39 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f518"),
"home" : ObjectId("596fe03ad496e047d6314c1c"),
"away" : ObjectId("596fe03ad496e047d6314bf6"),
"homeGoals" : 0,
"awayGoals" : 3,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b6"),
"date" : ISODate("2017-02-19T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 40 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f51d"),
"home" : ObjectId("596fe03ad496e047d6314bf6"),
"away" : ObjectId("596fe03ad496e047d6314bed"),
"homeGoals" : 0,
"awayGoals" : 4,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b4"),
"date" : ISODate("2017-04-05T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 41 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f522"),
"home" : ObjectId("596fe03ad496e047d6314bdb"),
"away" : ObjectId("596fe03ad496e047d6314c1c"),
"homeGoals" : 6,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b7"),
"date" : ISODate("2017-02-27T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 42 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f523"),
"home" : ObjectId("596fe03ad496e047d6314bfa"),
"away" : ObjectId("596fe03ad496e047d6314bed"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-05T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 43 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f524"),
"home" : ObjectId("596fe03ad496e047d6314bdb"),
"away" : ObjectId("596fe03ad496e047d6314be8"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b9"),
"date" : ISODate("2017-03-11T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 44 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f528"),
"home" : ObjectId("596fe03ad496e047d6314bed"),
"away" : ObjectId("596fe03ad496e047d6314be9"),
"homeGoals" : 1,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b9"),
"date" : ISODate("2017-03-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 45 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f526"),
"home" : ObjectId("596fe03ad496e047d6314bf6"),
"away" : ObjectId("596fe03ad496e047d6314bfa"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b9"),
"date" : ISODate("2017-03-11T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 46 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f525"),
"home" : ObjectId("596fe03ad496e047d6314bf4"),
"away" : ObjectId("596fe03ad496e047d6314c2d"),
"homeGoals" : 2,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-22T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 47 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f529"),
"home" : ObjectId("596fe03ad496e047d6314bfe"),
"away" : ObjectId("596fe03ad496e047d6314be0"),
"homeGoals" : 1,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-05T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 48 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f52b"),
"home" : ObjectId("596fe03ad496e047d6314c21"),
"away" : ObjectId("596fe03ad496e047d6314bf7"),
"homeGoals" : 2,
"awayGoals" : 1,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b9"),
"date" : ISODate("2017-03-12T08:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 49 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f527"),
"home" : ObjectId("596fe03ad496e047d6314c30"),
"away" : ObjectId("596fe03ad496e047d6314bee"),
"homeGoals" : 3,
"awayGoals" : 0,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-05-03T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
/* 50 */
{
"_id" : ObjectId("5976b6e2f42aa4d69585f52a"),
"home" : ObjectId("596fe03ad496e047d6314be9"),
"away" : ObjectId("596fe03ad496e047d6314c21"),
"homeGoals" : 1,
"awayGoals" : 2,
"tournament" : ObjectId("59726e597ec27162718ff90b"),
"stage" : ObjectId("59726e597ec27162718ff9b8"),
"date" : ISODate("2017-03-23T07:00:00.000Z"),
"notes" : "",
"__v" : 0
}
Home 和 Away 是球队的 ID,homeGoals 和 awayGoals 是比赛的比分。这些是我需要写的查询的主要参与者。在某些比赛中,A队是主队,而在另一些比赛中,A队是客队。但我需要像这样聚合这张表:
Team | Games Played | Games Won | Games Lost | Games Drawn | Goals For | Goals Against | Goal Differential | Points
------ | ------------ | --------- | ---------- | ----------- | --------- | ------------- | ----------------- | ------
Team A | 10 | 6 | 3 | 1 | 10 | 3 | 7 | 21
Team B | 10 | 5 | 3 | 2 | 11 | 5 | 6 | 18
我需要一种按 ID 组合团队的方法,无论他们是主队还是客队,总结他们的目标,并计算差异。
什么是使用猫鼬查询实现此目的的好方法,而不必查询所有内容并使用reduce或类似的东西。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
我相信您正试图强迫 MongoDB 像关系数据库一样工作,这从您文档中各处的
ObjectId(...)引用中可以明显看出。这不是自然的 MongoDB 设计模式,并且导致难以用简单的术语表达您的需求。我建议您重新考虑您的架构设计。例如,如果这个聚合结果是你一直需要的,你应该调整你的 MongoDB 模式模型以支持简单的聚合。有关示例,请参阅docs.mongodb.com/ecosystem/use-cases。 -
你可能有一个观点。我真正熟悉的是SQL DB。我将尝试重新考虑架构。谢谢!
标签: mongodb mongoose mongodb-query aggregation-framework