mirror of
https://github.com/Andreaierardi/Master-DataScience-Notes.git
synced 2025-02-04 07:27:32 +01:00
221 lines
6.6 KiB
JavaScript
221 lines
6.6 KiB
JavaScript
/* query the "bets" collection when not diversely specified */
|
||
|
||
/* retrieve the matches played in France Ligue 1*/
|
||
db.bets.find({
|
||
"league": 'France Ligue 1'
|
||
}).pretty()
|
||
|
||
/* count the number of documents in the result */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1'
|
||
}).count()
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes as home team */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"home_team_name": 'FC Nantes'
|
||
})
|
||
|
||
/* the same query as the previous one with the use of regular expression for matching the name of the Nantes team */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"home_team_name": /.*Nantes.*/
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by Nantes */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"$or": [
|
||
{ "home_team_name": /.*Nantes.*/ },
|
||
{ "away_team_name": /.*Nantes.*/ }
|
||
]
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by Nantes in 2008 */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"$and": [
|
||
{ "match_date": { "$gte": new ISODate('2008-01-01') } },
|
||
{ "match_date": { "$lte": new ISODate('2008-31-12') } }
|
||
],
|
||
"$or": [
|
||
{ "home_team_name": /.*Nantes.*/ },
|
||
{ "away_team_name": /.*Nantes.*/ }
|
||
]
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes and AJ Auxerre */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"$or": [
|
||
{ "home_team_name": {"$in": ['FC Nantes','AJ Auxerre']} },
|
||
{ "away_team_name": {"$in": ['FC Nantes','AJ Auxerre']} }
|
||
]
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes that have been quoted by Bet365 */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"bet.Bet365": { '$exists': true } ,
|
||
"$or": [
|
||
{ "home_team_name": /.*Nantes.*/ },
|
||
{ "away_team_name": /.*Nantes.*/ }
|
||
]
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes that have been quoted by Bet365 and return only the team names and the result */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"bet.Bet365": { '$exists': true },
|
||
"$or": [
|
||
{ "home_team_name": /.*Nantes.*/ },
|
||
{ "away_team_name": /.*Nantes.*/ }
|
||
]
|
||
}, {
|
||
"_id": 0,
|
||
"home_team_name": 1,
|
||
"away_team_name": 1,
|
||
"home_team_goal": 1,
|
||
"away_team_goal": 1
|
||
})
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes that have been quoted by Bet365 and return only the team names and the result and sort the result by match date */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"bet.Bet365": { "$exists": true },
|
||
"$or": [
|
||
{ "home_team_name": /.*Nantes.*/ },
|
||
{ "away_team_name": /.*Nantes.*/ }
|
||
]
|
||
}, {
|
||
"_id": 0,
|
||
"home_team_name": 1,
|
||
"away_team_name": 1,
|
||
"home_team_goal": 1,
|
||
"away_team_goal": 1
|
||
}).sort({ "match_date": 1 })
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes as home team where the quotation of Bet365 for Nantes as the winner is higher than 3 */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"home_team_name": /.*Nantes.*/,
|
||
"bet.Bet365.H": { "$gt": 3 }
|
||
},
|
||
{
|
||
"_id": 0,
|
||
"home_team_name": 1,
|
||
"away_team_name": 1,
|
||
"bet.Bet365.H": 1
|
||
}).sort({ "match_date": 1 })
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes as home team where the quotation of Bet365 for Nantes as the winner is higher than the away_team as the winner */
|
||
/* see the use of $expr operator for comparing the value of two property values:
|
||
https://docs.mongodb.com/manual/reference/operator/query/expr/ */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"home_team_name": /.*Nantes.*/,
|
||
"$expr": { "$gt": ["$bet.Bet365.H", "$bet.Bet365.A"] } },
|
||
{
|
||
"_id": 0,
|
||
"home_team_name": 1,
|
||
"away_team_name": 1,
|
||
"bet.Bet365.H": 1,
|
||
"bet.Bet365.A": 1
|
||
}).sort({ "match_date": 1 })
|
||
|
||
/* retrieve the matches played in France Ligue 1 by FC Nantes as home team where the quotation of Bet365 for Nantes as the winner is highest among the available quotations */
|
||
db.bets.find({
|
||
"league": 'France Ligue 1',
|
||
"home_team_name": /.*Nantes.*/,
|
||
"$and": [
|
||
{ "$expr": { "$gt": ["$bet.Bet365.H", "$bet.Bet365.A"] } },
|
||
{ "$expr": { "$gt": ["$bet.Bet365.H", "$bet.Bet365.D"] } }
|
||
]
|
||
}, {
|
||
"_id": 0,
|
||
"home_team_name": 1,
|
||
"away_team_name": 1,
|
||
"bet.Bet365.H": 1,
|
||
"bet.Bet365.D": 1,
|
||
"bet.Bet365.A": 1
|
||
}).sort({ "match_date": 1 })
|
||
|
||
/* retrieve the team (names) for which home Bet365 odds are better than away odds in the Italian football league */
|
||
db.bets.find({
|
||
"league": "Italy Serie A",
|
||
"$expr": { "$gt": ["$bet.Bet365.H", "$bet.Bet365.A"] }
|
||
}, {
|
||
'home_team_name': 1,
|
||
'away_team_name': 1,
|
||
'_id': 0
|
||
})
|
||
|
||
/* retrieve the matches where the home team scored more than 3 goals (rosters collection) */
|
||
db.rosters.find({
|
||
"outcome.0": { "$gt": 3 }
|
||
}, {
|
||
"_id": 0,
|
||
"match_date": 1,
|
||
"outcome": 1
|
||
})
|
||
|
||
|
||
/* retrieve the matches won by the home team */
|
||
db.bets.find(
|
||
{"$expr": { "$gt": [ "$home_team_goal", "$away_team_goal" ] } },
|
||
{
|
||
"_id": 0,
|
||
"match_date": 1,
|
||
"home_team_goal": 1,
|
||
"away_team_goal": 1
|
||
})
|
||
|
||
/* retrieve the matches of 2008 as well as the quotations of Bet365 for those matches */
|
||
db.bets.aggregate([
|
||
{ "$project": { "_id": 0, "bet.Bet365": 1, "match_date": 1, "match_year": { "$year": "$match_date" } } },
|
||
{ "$match": { "bet.Bet365": { "$exists": true }, "match_year": 2008 } }
|
||
])
|
||
|
||
/* retrieve the number of matches played in the Serie A for each available year */
|
||
db.bets.aggregate( [
|
||
{ "$match": {"league": "Italy Serie A"} },
|
||
{ "$project": {"_id": 0,
|
||
"year": {"$year": "$match_date"}
|
||
} },
|
||
{"$group": {"_id": "$year", "matches": {"$sum": 1} } },
|
||
{"$sort": {"_id": 1} }
|
||
] )
|
||
|
||
/* retrieve the sum of goals scored in 2009 in the Serie A */
|
||
db.bets.aggregate( [
|
||
{ "$project": {"_id": 0,
|
||
"league": 1,
|
||
"year": {"$year": "$match_date"},
|
||
"match_goals": {"$sum": ["$home_team_goal", "$away_team_goal" ] } } },
|
||
{ "$match": {
|
||
"league": 'Italy Serie A',
|
||
"year": 2009 } },
|
||
{"$group": {"_id": "$year", "goals": {"$sum": "$match_goals" } } },
|
||
] )
|
||
|
||
/* retrieve league that scored more than 1000 goals in a year */
|
||
db.bets.aggregate( [
|
||
{ "$project": {"_id": 0,
|
||
"league": 1,
|
||
"year": {"$year": "$match_date"},
|
||
"match_goals": {"$sum": ["$home_team_goal", "$away_team_goal" ] } } },
|
||
{ "$match": {
|
||
"league": 'Italy Serie A' } },
|
||
{"$group": {"_id": "$year", "goals": {"$sum": "$match_goals" } } },
|
||
{ "$match": {"goals": { "$gt": 1000 } } }
|
||
] )
|
||
|
||
/* retrieve the number of home matches played by each player in each year (rosters collection, use of $unwind) */
|
||
db.rosters.aggregate( [
|
||
{ "$project": {"_id": 0,
|
||
"home": 1,
|
||
"year": {"$year": "$match_date"}
|
||
} },
|
||
{'$unwind': '$home'},
|
||
{"$group": {"_id": {"year": "$year", "player": "$home.name"}, "matches": {"$sum": 1} } },
|
||
] ) |