在Sails js中计算重复的数字

时间:2015-01-22 04:00:26

标签: node.js mongodb mongodb-query sails.js aggregation-framework

我试图在SailsJS + mongoDB中获取重复的计数数字 模型很简单:

attributes: {
    sub_id: {
        model: 'Submission'
    }
}

因此,每一行都包含其id和对其他表的引用。我还是水线/ Sails JS的新手,所以我有点失去了如何计算每个唯一sub_id的数字(sub_id 5有3行,sub_id 9有10行等)。在mysql中,查询可能是这样的:

SELECT distinct(sub_id), count(id) FROM table group by sub_id

我怎么能在Sails JS中翻译这个?

1 个答案:

答案 0 :(得分:0)

MongoDB的等价物是aggregation framework。您需要访问本机集合对象才能使用它:

Model.native(function(err,collection) {

    collection.aggregate(
        [
            { "$group": {
                "_id": "$sub_id",
                "count": { "$sum": 1 }
            }}
        ],
        function(err,results) {
            console.log( results );
        }
    );

]);

所以$group类似于“GROUP BY”,这本质上是另一种形式的不同。 $sum运算符基本上是“SUM”,但是当输入1的常量值时,这与“COUNT”相同。

在本机集合下,这些方法符合节点本机驱动程序规范,因此.aggregate()的所有选项都显示在那里。

另请参阅文档中的SQL to Aggregation Mapping Chart以了解其他常见翻译。