Как посчитать поля $ lookup в mongo db? - PullRequest
0 голосов
/ 19 сентября 2018

Я новичок в mongodb, теперь мне нужно посчитать поле поиска $, возможно ли это?

У меня было что-то вроде этого:

result = await company.aggregate([
  {
    $lookup: {
      from: 'userFocus',
      localField: '_id',
      foreignField: 'value',
      as: 'focusUsers'
    }
  },
  {
    $project:{
      name: 1,
      focusUsers: {userId: 1}
    }
  }
])

и результат выглядиткак это:

[
  {_id: 'xxxx', name: 'first company', focusUsers: [user1, user2, user3...]},
  {_id: 'yyyy', name: 'second company', focusUsers: []},
  {_id: 'zzzz', name: 'third company', focusUsers: []}
]

Теперь я хочу, чтобы дополнительный столбец отображал количество focusUsers, другими словами, я хочу получить результат, подобный следующему:

[
  {_id: 'xxxx', name: 'first company', focusUsers: [user1, user2, user3], focusCount: 3},
  {_id: 'yyyy', name: 'second company', focusUsers: [], focusCount: 0},
  {_id: 'zzzz', name: 'third company', focusUsers: [], focusCount: 0}
]

Возможно ли это?Как это сделать?Пожалуйста, совет некоторых экспертов, заранее спасибо!

1 Ответ

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

Вы можете использовать $size оператор агрегирования, чтобы найти длину массива.

company.aggregate([
  { "$lookup": {
    "from": "userFocus",
    "localField": "_id",
    "foreignField": "value",
    "as": "focusUsers"
  }},
  { "$project": {
    "name": 1,
    "focusUsers": 1,
    "focusCount": { "$size": "$focusUsers" }
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...