#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. спасибо за ваш комментарий. но я хочу две коллекции вместе. это мой бизнес и с большими данными внутри них