集团(在)mongoose?

我已经在shell中构build了我想要的查询,但是在Mongoose中编写它时遇到了麻烦。

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

我对Mongoose语法有点困惑; 也许有人可以在这一点上有所了解。 非常感谢。

根据这个职位 :

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

不幸的是,我们似乎缺乏这方面的文件。

MapReduce应该是正确的方法,但是如果你不分割,你的查询不会超过10k条logging。

您可以通过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-native source: https : //github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js#L1165

MongoDB组doc: http : //www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

如果你正在尝试使用Mongoose进行分组,也许你最好在node.js / expresspath中查看这个Mongoose组查询

Mongoose似乎并不支持聚合。