【问题标题】:Counting number for duplicate in Sails jsSails js中重复的计数
【发布时间】:2015-01-22 04:00:26
【问题描述】:

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

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

因此,每一行都包含其 id 和对其他表的引用。我还是 waterline/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 中翻译这个?

【问题讨论】:

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


    【解决方案1】:

    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 了解其他常见翻译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 2019-03-14
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2020-12-24
      相关资源
      最近更新 更多