Это самый быстрый и самый элегантный ответ на мой вопрос. Большое спасибо, сэр

я есть коллекция mongoDB под названием «конференция» с множеством участников, как показано ниже:

[
  {
    "_id" : 5b894357a0c84d5a5d221f25, 
    "conferenceName" : "myFirstConference",
    "startDate" : 1535722327, 
    "endDate" : 1535722420,
    "participants" : [
        {
            "name" : "user1", 
            "origin" : "internal", 
            "ip" : "192.168.0.2"
        },
        {
            "name" : "user2", 
            "origin" : "external", 
            "ip" : "172.20.0.3"
        }, 
    ]
  },
  ...
]

Я хотел бы получить следующий результат:

[
  {
     "conferenceName" : "myFirstConference",
     "startDate" : 1535722327, 
     "endDate" : 1535722420,
     "internalUsersCount" : 1
     "externalUsersCount" : 1,
  },
  ...
]

Я попробовал запрос ниже, но он не работает:

db.getCollection("conference").aggregate([
   {
     $addFields: {
       internalUsersCount : {
            $size : { "$participants" : {$elemMatch : { origin : "internal" }}}
         },
       externalUsersCount : {
            $size : { "$participants" : {$elemMatch : { origin : "external" }}}
         }         
     }
   }
])

Как можно посчитать элементы массива "участник", которые соответствуют{"origin": "internal"} а также{"origin": "external"} ?

Ответы на вопрос(1)

Ваш ответ на вопрос