node.js - MongoDB无法调用未定义的方法 'aggregate'

标签 node.js mongodb aggregation-framework

我正在尝试拉出数组中的最低分数。我的错误是无法调用未定义的“聚合”方法。 mongodb中定义了聚合方法,我什至找到了它,并且db.students肯定是定义的。我似乎找不到哪里出错了。

var MongoClient = require('mongodb').MongoClient // Driver for connecting to MongoDB

MongoClient.connect('mongodb://localhost:27017/school', function(err, db) {
      if(err) throw err;

x = db.students.aggregate( [{ "$unwind":"$scores" },{"$match":{"scores.type":"homework"}},{ "$group":{"_id":"$_id","minscore":{"$min":"$scores.score" }}} ] )

x.result.forEach(function(doc) {
   db.students.update( { "_id": doc._id }, 
                       { "$pull": { "scores" : { 
                                          "score":doc.minscore, 
                                          "type":"homework"
                       } } } 
   );
});

});

我有一种感觉,因为盯着这个看得太久,我变得视野狭隘,谢谢你用一双新鲜的眼睛为我审视它。

最佳答案

如果您要使用 Node 驱动程序,则不能使用与 Mongo shell 中相同的语法。应该是这样的:

db.collection('students').aggregate();

Here's the reference.

关于node.js - MongoDB无法调用未定义的方法 'aggregate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21536452/

相关文章:

MongoDB 将两个数组内的值相乘

node.js - 在单独的 ec2 实例上连接到 mongodb

node.js - mongoDB 和 sails 聚合不能与 Nodejs 一起使用

mongodb - $elemMatch 在 MongoDB 聚合框架中 $unwind 之后不起作用

mongodb - 在 mgo 中查询字符串数组

Django:admin.StackedInline 没有外键

node.js - Mongoose 中子文档的总和

javascript - 如何通过 collection.update 在 mongodb 上使用 ttl(生存时间)?

javascript - 如何获取正在运行的函数所属的对象名?

node.js - 以正确的方式使用 Azure blob 容器?