MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

TypeError:objeto não é uma função no uso do MongoDB com Node.js


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();
    }
  );
});