Mongoose聚合不起作用

时间:2012-11-04 18:18:49

标签: mongodb mongoose

Mongodb 2.2.0和mongoose 3.3.1。

我正在尝试在以下查询中运行aggregate

var db = mongoose.connect('localhost', 'test', '27017').connection;
var testSchema = new Schema;
var tr= db.model('tests', testSchema);  

tr.aggregate({'$group':{'_id':'$test_id', 'average':{$avg:'$tes_tscore'}}})

以下错误不断弹出:

TypeError: Object function model(doc, fields, skipId) {
    if (!(this instanceof model))
      return new model(doc, fields, skipId);
    Model.call(this, doc, fields, skipId);
  } has no method 'aggregate'  

mongoose还不支持聚合,还是我的代码遗漏了什么?

** tests集合有超过1000个文档。正在运行tr.find(... console.log(...)会返回所需的文档。

2 个答案:

答案 0 :(得分:1)

我解决了。

在脚本中放置console.log(mongoose.version);显示为过时版本(3.0.2)。

我通过模块(这次小心)回去并删除并重新安装mongoose 版本3.3.1和aggregate现在有效。

aggregate上线v.3.1.0

答案 1 :(得分:0)

在3.x中支持聚合。您的示例中的代码看起来不错,但不知何故tr引用了model()方法而不是模型实例。如果您能够始终如一地重新创建此问题,请打开一张包含要运行的确切代码的票证,我们将对其进行修复。

https://github.com/LearnBoost/mongoose/issues/new