【问题标题】:Sails.js mongodb map reduceSails.js mongodb map reduce
【发布时间】:2014-03-29 08:13:22
【问题描述】:

我将sails 与sails-mongo 一起使用,并且希望在集合中执行聚合。我想重用 waterline 使用的连接对象,而不是创建与 mongodb 服务器的全新连接。这个连接对象在某处可用吗?它可以执行任何查询类型吗?

这是基于对水线/帆目前无法进行聚合的理解。

【问题讨论】:

    标签: mongodb sails.js waterline


    【解决方案1】:

    听起来您正在寻找.native 方法,该方法返回原始节点mongo 集合实例。这允许您使用本机 Mongo 方法。例如,如果你是 Sails 中的 User 模型,你会这样做:

    User.native(function(err, userCollection) {
    
        userCollection.aggregate(...)
    
    }
    

    本机 Node Mongo 驱动程序的文档是 here,包括如何进行聚合的部分。

    .native 方法的文档是on the sailsjs.org

    【讨论】:

    • 您在哪里可以找到这些信息?除了阅读sails-mongo 源代码并专门寻找它之外,我找不到任何对native 方法的引用
    【解决方案2】:

    只是为了减少搜索和分享经验,这里是 Sails.js 中 mongodb 聚合的工作模板(用于模型用户):

    User.native(function(err, collection) {
        if (err) return res.serverError(err);
    
        collection.aggregate(
          [
            //Your matching and grouping here
            //{ $match : { country : user.country } },
            //{ $group: { _id: "$age", count: { $sum: 1 } } }
          ], function(err, result){
               if (err) return res.serverError(err);
               console.log(result);
             }
        );
    });
    

    更多关于聚合:http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/

    【讨论】:

    • 您的代码中缺少 },最终应如下所示:});});
    • 很高兴为您提供帮助:D
    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多