0

Я пытаюсь получить номер подсчета для дубликата в SailsJS + mongoDB.
Модель довольно проста:Номер подсчета для дубликатов в Sails js

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

Таким образом, каждая строка содержит свой идентификатор и ссылку на другую таблицу. Я по-прежнему новичок в ватерлинии/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

Эквивалент для 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 в документации для других распространенных переводов.

Смежные вопросы