19

必要なクエリをシェルで作成しましたが、Mongoose での書き込みに問題があります。

db.commentstreams.group({ key: { page_id: true }, reduce: function(obj,prev) { prev.num_comments += obj.num_comments }, initial: { num_comments: 0 } })

私は Mongoose の構文に少し混乱しています。おそらく誰かがこれに光を当てることができます。どうもありがとう。

4

4 に答える 4

15

この投稿によると:

Model.find({}, [fields], {'group': 'FIELD'}, function(err, logs) { 
        ... 
}); 

残念ながら、これに関するドキュメントが不足しているようです。

于 2011-09-27T13:37:36.143 に答える
13

MapReduceは適切な方法ですが、シャーディングを行っておらず、クエリの結果が10kを超えない場合は、問題ありません。

moongooseを介して任意のnode-mongodb-native関数にアクセスできるため、次のようになります。

var group = {
   key: {},
   cond: {item_id: item_id},
   reduce: function(doc, out) {
      out.count++;
      out.total += doc.value;
   },
   initial: {
       total: 0,
       count: 0
   },
   finalize: function(out) {
       out.avg = out.total / out.count;
   }
};

Item.collection.group(group.key, group.cond, group.initial, group.reduce, group.finalize, true, function(err, results) {
    console.log('group results %j', results);
});

node-mongodb-ネイティブソース: https ://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js#L1165

MongoDBグループドキュメント: http ://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

于 2012-05-12T00:17:37.500 に答える
0

Mongoose を使用してグループ化しようとしている場合は、node.js / Express Routeでこの Mongoose グループ クエリを確認することをお勧めします。

グループはMongooseでサポートされていませんが、集約はサポートされているようです。

于 2016-07-17T08:22:07.947 に答える