O último argumento de collection.aggregate() precisa ser um retorno de chamada. O driver mongodb está esperando uma função, mas seu último argumento é um objeto. É por isso que você está recebendo esse erro. Aqui está o código revisado com o retorno de chamada:
var MongoClient = require('mongodb').MongoClient;
var server = require('mongodb').Server;
var mongoclient = new MongoClient(new server("localhost", 27017));
mongoclient.connect("mongodb://localhost:27017/", function(err, db) {
if (err) throw err;
var db = mongoclient.db('school');
cursor = db.collection('students').aggregate(
[
{$match: {"scores.type": "homework"}},
{$unwind: "$scores"},
{
$group: {
_id: '$name',
'minimum': {$min: "$scores.score"}
}
}
], function(err, result) { // callback
console.dir(result);
db.close();
}
);
});