【问题标题】:Group (By) in Mongoose?猫鼬中的组(按)?
【发布时间】:2011-10-14 17:16:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: mongodb node.js mongoose


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您尝试使用 Mongoose 进行分组,也许您最好看看这个 Mongoose group query in node.js / express route

      Mongoose 似乎不支持组,而聚合支持。

      【讨论】:

        【解决方案3】:

        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-native 来源: https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js#L1165

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

        【讨论】:

          【解决方案4】:

          根据this post

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

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

          【讨论】:

          • 这似乎不起作用 - 它返回所有文档作为空查找。
          • $group 而不是 group?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-16
          • 1970-01-01
          • 1970-01-01
          • 2017-04-06
          • 1970-01-01
          • 2015-12-28
          • 2017-04-25
          相关资源
          最近更新 更多