1

Mongodb2.2.0およびmongoose3.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'  

マングースはまだ集約をサポートしていませんか、それとも私のコードに何かが欠けていますか?

**testsコレクションには1000を超えるドキュメントがあります。実行tr.find(... console.log(...)すると、目的のドキュメントが返されます。

4

2 に答える 2

1

私はそれを解決しました。

console.log(mongoose.version);スクリプトを挿入すると、古いバージョン(3.0.2)として表示されました 。

モジュールを(今回は慎重に)やり直し、削除して再インストールしmongooseました。
バージョン3.3.1で、aggregate動作するようになりました。

aggregateオンラインになりましたv.3.1.0

于 2012-11-14T23:13:14.217 に答える
0

集約は3.xでサポートされています。この例のコードは問題ないように見えますが、どういうわけかtr、モデルインスタンスではなくmodel()メソッドを参照しています。この問題を一貫して再現できる場合は、実行する正確なコードを含むチケットを開いてください。修正されます。

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

于 2012-11-05T05:15:07.963 に答える