我试图在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中翻译这个?
答案 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以了解其他常见翻译。