Das hast du falsch gemacht. Sollte lauten:
db.scores.aggregate([
{ "$match": {
"score": { "$gte": 30, "$lte": 60 }
}},
{ "$group": {
"_id": "$gamer",
"games": { "$sum": 1 }
}}
])
Das ist der richtige Weg, um eine "Bereichs"-Abfrage anzugeben, bei der die tatsächlichen Bedingungen "und" und daher "zwischen" den angegebenen Operanden sind.