2014-03-29 102 views
2

我正在使用sails-mongo的风帆,我正在寻找跨集合执行聚合。我想重用水线使用的连接对象,而不是创建一个到mongodb服务器的全新连接。这个连接对象是否可用,它可以执行任何查询类型吗?Sails.js mongodb map reduce

这是基于以下认识:水线/帆目前不能进行聚合。

回答

3

这听起来像你正在寻找.native方法,该方法返回原始节点mongo集合实例。这使您可以使用本机Mongo方法。例如,如果你在一个帆模型User,你会怎么做:

User.native(function(err, userCollection) { 

    userCollection.aggregate(...) 

} 

文档的本地节点蒙戈司机是here,包括如何做聚集部分。

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

+0

你在哪里找到此信息?除了阅读sails-mongo源代码并专门寻找它之外,我找不到任何对'native'方法的引用 – mrmagooey

1

只需较少的搜索和分享经验,这里是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); 
     } 
    ); 
); 

更多aggreagation:http://docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/

+1

代码中缺少**} **,最终的代码应该如下所示:'}) ;});' – aleix