在 Sails js 中计算重复项的数量

Counting number for duplicate in Sails js

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

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

因此,每一行都包含其 ID 和对其他 table 的引用。我还是 waterline/Sails JS 的新手,所以我有点不知道如何计算每个唯一 sub_id 的数字(sub_id 5 有 3 行,sub_id 9 有 10 行, ETC)。在 mysql 中,查询可能是这样的:

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

我如何在 Sails JS 中翻译它?

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

Model.native(function(err,collection) {

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

]);

所以 $group is analogous to "GROUP BY", which is essentially another form of distinct in itself really. The $sum 运算符基本上是 "SUM",但是当输入常数值 1 时,这与 "COUNT".

相同

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

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