Sails.js/waterline: groupBy + count

Posted

技术标签:

【中文标题】Sails.js/waterline: groupBy + count【英文标题】: 【发布时间】:2015-01-09 05:27:58 【问题描述】:

使用sails.js (0.10.5):

我不知道如何使用水线/帆来实现 groupBy/count。我想要的是这样的:

SELECT customer_id, COUNT('') FROM customer_data GROUP BY customer_id;
or
SELECT customer_id, SUM(1) FROM customer_data GROUP BY customer_id;

我无法使用 count 和 sum(使用常量)来实现这一点:

Customer.find( groupBy:['customer_id'], count: true )
or
Customer.find( groupBy:['customer_id'], sum: [1] )

两者都会以错误结束,第一个“缺少计算”和第二个“SQL 语法错误”。 我可以使用 sum 与现有列 (sum: ['id']) 进行分组,但这并没有让我得到计数​​。

我是不是用错了 API?

【问题讨论】:

【参考方案1】:

请使用Customer.query('SELECT customer_id, SUM(1) FROM customer_data GROUP BY customer_id', function(err,results))

如果你不想使用sql,你可以这样使用 Customer.find(groupBy:'customer_id').exec

参考:waterline-sequel select builder function

【讨论】:

对于迟到的评论感到抱歉:我正在考虑结合生成的 where 语句 (***.com/q/27852766/3045181)。我试图查看这个 where-statement-generation,但我发现它相当复杂(使用 waterline-sequel)。 哦,我明白了,是不稳定的模块:)【参考方案2】:

.query() 自 Sails v1.0 起已弃用,而是使用 .getDatastore().sendNativeQuery()(参考:https://sailsjs.com/documentation/reference/waterline-orm/models/query)。使用 Waterline 仍然无法做到这一点。

【讨论】:

以上是关于Sails.js/waterline: groupBy + count的主要内容,如果未能解决你的问题,请参考以下文章

Sails.js/waterline: groupBy + count

Sails.js Waterline ORM:.findOrCreate() 没有 .populate() 方法

在视图中显示一对多关系sails.js waterline orm的列表

MongoDB 聚合比较:group()、$group 和 MapReduce

SQL-jacard 相似度

python 正则表达式 groups和group有啥区别