Нужна помощь по запросу MongoDB Активность (1 ... n) Подписка (1 ... n) Счет - PullRequest
0 голосов
/ 03 октября 2018

У меня есть база данных MongoDB со следующими модельными отношениями.«Активность» имеет много «Подписок».«Подписки» имеют много «счетов-фактур».Каждая подписка относится к одному виду деятельности.Каждый счет-фактура принадлежит одной подписке

. При заданном действии Я хочу узнать СЧЕТ всех счетов, связанных с этим заданием

Как можно написать такой запрос в MongoDB?(Я хочу не добавлять ссылку на активность в каждый счет)

1 Ответ

0 голосов
/ 03 октября 2018

Если я правильно вас понимаю, у вас есть 3 коллекции: «Активность», «Подписки», в которых есть ссылки на «Активность», и «Счета-фактуры», в которых есть ссылки на «Подписки».Если это так, ваш код должен выглядеть следующим образом

db.invoices.aggregate([
  {
    $lookup: {
      from: 'subscriptions',
      localField: 'subscriptionId',
      foreignField: '_id',
      as: 'subscription'
    }
  },
  {
    $lookup: {
      from: 'activities',
      localField: 'subscription.activityId',
      foreignField: '_id',
      as: 'activity'
    }
  },
  {
    $match: {
      'activity._id': 'your activity _id'
    }
  },
  {
    $count: 'invoice_count'
  }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...