MongoDB
  • Введение
  • Установка и пример
  • Сортировка чисел
  • Поля - массивы
  • Вложенные поля
  • Работа с индексами
  • Информация о базе
  • Уникальные индексы
  • Пагинация
  • Регулярные выражения
  • Использование JavaScript
  • Группировка
  • Виды коллекций
  • Загрузка из файла
  • Курсоры
  • Метод save
  • Создание ссылок
Powered by GitBook
On this page

Was this helpful?

Группировка

Создаем коллекцию для хранения оценок:

db.createCollection("marks");

Добавляем записи с оценками:

db.marks.insert({man: "Maxim", mark: 4});
db.marks.insert({man: "Maxim", mark: 4});
db.marks.insert({man: "Maxim", mark: 5});
db.marks.insert({man: "Maxim", mark: 5});
db.marks.insert({man: "George", mark: 2});
db.marks.insert({man: "George", mark: 2});
db.marks.insert({man: "George", mark: 3});
db.marks.insert({man: "George", mark: 3});
db.marks.insert({man: "George", mark: 3});
db.marks.insert({man: "George", mark: 2});
db.marks.insert({man: "Ann", mark: 5});
db.marks.insert({man: "Ann", mark: 4});

Получаем количество оценок у каждого ученика:

db.marks.group({
    key: {man: true},
    initial: {myCount: 0},
    reduce: function(doc, aggregator) {
        aggregator.myCount += 1;
    },
    finalize: function(doc) {
        doc.count_of_marks = doc.myCount;
    }
});

Получаем среднюю оценку у каждого ученика:

db.marks.group({
    key: {man: true},
    initial: {myCount: 0, myMarksSum: 0},
    reduce: function(doc, aggregator) {
        aggregator.myCount += 1;
        aggregator.myMarksSum += doc.mark;
    },
    finalize: function(doc) {
        doc.avg_result = doc.myMarksSum / doc.myCount;
    }
});

Получить процентное соотношение оценок у каждого ученика:

db.marks.group({
    key: {man: true},
    initial: {m2: 0, m3: 0, m4: 0, m5: 0, mAll: 0},
    reduce: function(doc, aggregator) {
        aggregator.mAll++;
        if(doc.mark === 2) aggregator.m2++;
        if(doc.mark === 3) aggregator.m3++;
        if(doc.mark === 4) aggregator.m4++;
        if(doc.mark === 5) aggregator.m5++;
    },
    finalize: function(doc) {
        doc.twoPercent = (doc.m2 / doc.mAll) * 100 + "%";
        doc.threePercent = (doc.m3 / doc.mAll) * 100 + "%";
        doc.fourPercent = (doc.m4 / doc.mAll) * 100 + "%";
        doc.fivePercent = (doc.m5 / doc.mAll) * 100 + "%";
    }
});
PreviousИспользование JavaScriptNextВиды коллекций

Last updated 5 years ago

Was this helpful?