"запрос" количество сообщений для каждой категории expressjs mongoose - PullRequest
0 голосов
/ 22 сентября 2018

Я новичок в стеке MERN. Я пытался написать этот запрос, но я не могу и много искать в Google без какого-либо решения.

Мне нужно указать одну для сообщений, а вторую для категории

Таблица 1 сообщений

--------------------------
|id   | title  |  category |
--------------------------
| 1   | title1 |    1      |
| 2   | title2 |    2      |
| 3   | title3 |    1      |
| 4   | title4 |    1      |

================= Таблица 2 категории

---------------
|id   | name   |
---------------
| 1   |  cat1  |
| 2   |  cat2  |

==================== я хочу получить следующие результаты:

---------------------------------
|id   | name   | number of posts |
---------------------------------
| 1   |  cat1  |        3        |
| 2   |  cat2  |        1        |

, если это может помочь, я напишу этот запрос в mysql

SELECT categories.*,COUNT(posts.id) AS np FROM `categories` JOIN materials ON (categories.id = posts.category) GROUP BY categories.id

испасибо

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете попробовать ниже агрегации в mongodb 3.6 и выше

db.collection.aggregate([
  { "$lookup": {
    "from": "posts",
    "let": { "id", "$id" },
    "pipeline": [
      { "$match": { "$expr": { "$eq": ["$category", "$$id"] }}},
      { "$count": "count" }
    ],
    "as": "count"
  }},
  { "$project": {
    "name": 1,
    "numberOfPosts": { "$arrayElemAt": ["$count.count", 0] }
  }}
])
...