在 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 了解其他常见翻译。
我正在尝试获取 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 了解其他常见翻译。