Подсчет результата агрегированного запроса MongoDB с поиском и соответствием

#java #mongodb #mongodb-query

#java #mongodb #mongodb-запрос

Вопрос:

у меня есть две коллекции: job, mobile
задание —> _id,заголовок, personid
мобильный —> _id, номер мобильного телефона, идентификатор пользователя
поля представляют собой строку.

две взаимосвязи коллекций: personid

получаем подсчет коллекции заданий:
db.job.count({title : «программист»}); —> результат: 76522

моя проблема здесь:

 db.job.aggregate([
  {$group : {_id:{title:"$title",personid:"$personid"},count:{$sum:1}}},
    {
      $lookup:
        {
          from: "mobile",
          localField: "_id.personid",
          foreignField: "personId",
          as: "mobileDocs"
        }
   },
   {
      $match:{ 
          title: "programmer",
          "mobileDocs.mobileNumber": /^9352/
          }}
]);  

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

5200

очень быстрый и работает с $lookup и $match

Комментарии:

1. В чем проблема? Результат медленный или неправильный? Можете ли вы использовать $match в качестве первого шага вашего конвейера. Кроме того, это $regex должно было быть $eq

2. Вам действительно нужно иметь две коллекции? Почему бы вам просто не поместить номер мобильного телефона непосредственно в коллекцию заданий? Запрос был бы намного быстрее…

3. спасибо за ваш комментарий. но я хочу две коллекции вместе. это мой бизнес и с большими данными внутри них