Mongodb 猫鼬群?

Mongodb 猫鼬群?,mongodb,node.js,mongoose,Mongodb,Node.js,Mongoose,我已经在shell中构建了我想要的查询,但是在Mongoose中编写它时遇到了困难 db.commentstreams.group({ key: { page_id: true }, reduce: function(obj,prev) { prev.num_comments += obj.num_comments }, initial: { num_comments: 0 } }) 我对猫鼬的语法有点困惑;也许有人能解释一下这件事。非常感谢。根据: 不幸的是,我们似乎缺少这方面的文档 Map

我已经在shell中构建了我想要的查询,但是在Mongoose中编写它时遇到了困难

db.commentstreams.group({ key: { page_id: true }, reduce: function(obj,prev) { prev.num_comments += obj.num_comments }, initial: { num_comments: 0 } })
我对猫鼬的语法有点困惑;也许有人能解释一下这件事。非常感谢。

根据:


不幸的是,我们似乎缺少这方面的文档

MapReduce应该是正确的方法,但是如果您不进行切分,并且您的查询不会产生超过10k条记录,那么就可以了

您可以通过moongoose访问任何节点mongodb本机函数,因此如下所示:

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);
});
节点mongodb本机源:

MongoDB集团单据:

如果你想用猫鼬来分组,也许你最好看看这个


似乎Mongoose不支持group,而aggregate支持group。

我使用了类似的示例,希望这对您有所帮助

Register.aggregate(
[
  {
   $group: {_id: {campaign: "$campaign"}, quantity: {$sum: 1}}
},
  {
    $limit: 5
  },
  {
    $sort: {date: -1}
  }
], function (err, res) {
        console.log(res)
});

这似乎不起作用-它返回所有文档作为一个空查找。$group而不是group?
Register.aggregate(
[
  {
   $group: {_id: {campaign: "$campaign"}, quantity: {$sum: 1}}
},
  {
    $limit: 5
  },
  {
    $sort: {date: -1}
  }
], function (err, res) {
        console.log(res)
});