2016-08-26 6 views
-1

:私は私が必要正確に得たものモンゴDBの違いはMongoDBの中で次のクエリを実行する(3.2.7)シェルと

db.coll.aggregate({$group: {_id : '$Name', count : {$sum: 1 }}}, {$project: { _id:0, Name: '$_id', count: 1 }}) 

{ "count" : 4, "Name" : "Name1" } 
{ "count" : 5, "Name" : "Name2" } 
{ "count" : 1, "Name" : "Name3" } 
{ "count" : 9, "Name" : "Name4" } 

私はこの凝集を使用したいですNodeJSに(MongoDBのノードモジュール2.2.5)ので、私はAPIを定義:

app.get('/api', function(req, res){ 
     db.collection('coll').aggregate({$group: {_id : '$Name', count : {$sum: 1 }}}, {$project: { _id: 0, Name: '$_id', count: 1 }}).toArray(function(err, docs) { 
      if (err) { 
       assert.equal(null); 
      } 
      else { 
       console.log(docs); 
       res.json(docs); 
      } 
     }); 
    }); 

私はこのAPIを実行すると、私は、レガールに異なる結果を得シェルの結果にds:

[{"_id":"Name1","count":4},{"_id":"Name2","count":5},{"_id":"Name3","count":1},{"_id":"Name4","count":9}] 

誰もがなぜそうですか? NodeJS APIでは$project関数が実行されていないようです。

答えて

0

パイプライン(aggregateの最初の引数)が配列であることがdocumentation状態:

db.collection('coll').aggregate([{ 
    $project: { _id: 0, Name: '$_id', count: 1 } 
}, { 
    $group: {_id : '$Name', count : { $sum: 1 } } 
}]).toArray(...) 
関連する問題