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(...)
会返回所需的文档。
答案 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()方法而不是模型实例。如果您能够始终如一地重新创建此问题,请打开一张包含要运行的确切代码的票证,我们将对其进行修复。