пн goose несколько групп сбора в одном запросе - PullRequest
0 голосов
/ 30 марта 2020

У меня есть 3 коллекции: пользователи, платежи и филиал.

var UserSchema = new Schema({
    email: { type: String} ,
    branchId: { type: Schema.Types.ObjectId, ref: 'Branch' },
});

var PaymentSchema = new Schema({
    userId: { type: Schema.Types.ObjectId, ref: 'User', required:true },
    branchId: { type: Schema.Types.ObjectId, ref: 'Branch' },
    amount: Number,
    status: Boolean,
    paymentStatus: String,
    receivedAmount: Number
});

var BranchSchema = new Schema({
    name: {type : String}
});

Я пытаюсь получить отчет на основе идентификатора филиала.

  • Группировать по пользователям получить общее количество студентов по филиалам.
  • Группировать по таблице платежей, чтобы получить данные по платежам по филиалам.

Данные отчетов должны быть по филиалам. как Имя филиала, Общее количество студентов, Сумма итогов, Оплаченные студенты, Полученная сумма, Сумма баланса

Я пытался с этим запросом

Payment.aggregate([
  {
    $group: {
      _id: "$branchId",
      amount: { $sum: "$amount" },
      paidStudents: {
        $sum: { $cond: [{ $eq: ["$paymentStatus", true] }, 1, 0] }
      },
      receivedAmount: { $sum: "$receivedAmount" }
    },{
        "$lookup": {
          from: "branches",
          localField: "branchId",
          foreignField: "_id",
          as: "branches"
        }
      }
  }
]);

Я получаю выходное Имя филиала, Сумма итогов, Оплачено Студенты, полученная сумма, балансовая сумма, но Всего студентов не получено, потому что необходимо группировать по коллекциям пользователей ..

Не могли бы вы помочь, как группировать по нескольким коллекциям?

Ожидается вывод с данными ниже:

  • Название филиала (из коллекции филиалов),
  • Всего студентов в филиале (из коллекции пользователей),
  • Итого Сумма в филиале (из сбора платежей),
  • Оплачено Студенты в филиале (из сбора платежей),
  • Полученная сумма в филиале (из сбора платежей),
  • Сумма баланса в филиал (из сбора платежей) ..
...