SOCIAL MEDIA APP
Descrição da oferta de emprego
MongoDB Aggregation Performance Optimization Project Description.
We are experiencing significant delays with a MongoDB aggregation pipeline in our application.
The specific controller takes about 36 seconds to complete when a user has a large amount of chat data in the database.
We need a MongoDB expert to review and optimize the aggregation pipeline for improved performance.
Details.
Our application is built using Node.
s with Mongoose as the ODM for MongoDB.
The current issue arises when retrieving a user's chat list.
The aggregation pipeline fetches chat messages for a given user, including related user information and performs various operations like sorting, grouping, and filtering based on certain criteria.
Current Function.
Here’s the function that handles the retrieval of user chats.
javascript Copy code const userChatList = async (userId, page, language) => { try { const user = await [login to view URL](userId); if (!user) { throw 'User not found'; } const pageNb = parseInt(page) || 1; let limit = 10; if (['affiliate', 'admin'].
ncludes([login to view URL])) { limit = 20; } if (pageNb throw 'Invalid page'; } const startIndex = (pageNb - 1) * limit; let matchLanguage = {}; if (language) { matchLanguage = { $or.
[{ '[login to view URL]'.
language }, { '[login to view URL]'.
language },], }; } const aggregatedChats = await [login to view URL]([{ $match.
{ $or.
[{ fromUser.
userId }, { toUser.
userId }], }, }, { $lookup.
{ from.
'users', localField.
'fromUser', foreignField.
'_id', as.
'fromUserDetails', }, }, { $lookup.
{ from.
'users', localField.
'toUser', foreignField.
'_id', as.
'toUserDetails', }, }, { $unwind.
'$fromUserDetails', }, { $unwind.
'$toUserDetails', }, { $match.
matchLanguage, }, { $sort.
{ createdAt.
-1 }, }, { $group.
{ _id.
{ $cond.
[{ $eq.
['$fromUser', userId] }, '$toUser', '$fromUser'], }, lastMessage.
{ $first.
'$$ROOT' }, }, }, { $sort.
{ '[login to view URL]'.
-1 }, }, { $skip.
startIndex, }, { $limit.
limit, },]); // Further processing and emitting results via [login to view URL] } catch (error) { [login to view URL](error); throw error; } }; Performance Results.
Total Time.
s Chat Aggregation.
s chats model.
`const mongoose = require('mongoose'); const chatSchema = new [login to view URL]({ fromUser.
{ type.
[login to view URL], ref.
'User', }, toUser.
{ type.
[login to view URL], ref.
'User', }, type.
{ type.
String, enum.
['text', 'audio', 'image', 'video'], }, text.
{ type.
String, }, voice.
{ type.
String, }, image.
{ type.
String, }, video.
{ video.
{ type.
String }, thumbnail.
{ type.
String }, }, audio.
{ type.
String, }, wasLocked.
{ type.
Boolean, default.
false, }, isLocked.
{ type.
Boolean, default.
false, }, diamonds.
{ type.
Number, }, isRead.
{ type.
Boolean, default.
false, }, isSubscribed.
{ type.
Boolean, default.
false, }, }, { timestamps.
true, }); // Compound index for fromUser and toUser [login to view URL]({ fromUser.
1, toUser.
1 }); // Index for createdAt for sorting [login to view URL]({ createdAt.
-1 }); [login to view URL]({ toUser.
1, createdAt.
-1 }); [login to view URL] = [login to view URL]('Chat', chatSchema); ` Requirements.
Review and Optimize Aggregation Pipeline.
We need you to review the existing aggregation pipeline and suggest improvements to reduce the execution time.
Indexing.
Assess the current index setup and suggest or implement changes to optimize the aggregation.
Profile Database.
Use MongoDB performance tools to identify potential bottlenecks and propose or implement solutions.
Document Changes.
Document any changes you make and provide recommendations for future improvements.
Skills Required.
MongoDB Mongoose Node.
s Database Optimization Performance Profiling Please provide an estimate for the expected budget and timeline for this task.
We are seeking to resolve this issue as soon as possible.
Please DO NOT waste our time if you are not totally skilled and if you a chatGPT only user.
JavaScript MongoDB Node.
s Programação de Banco de Dados Performance Tuning ID do Projeto.
# Sobre o projeto 35 propostas Aberto para ofertas Projeto remoto Ativo em 1 hora atrás
Detalhes da oferta
- Indeterminado
- Em todo Portugal
- Indeterminado - Indeterminado
- 04/05/2024
- 02/08/2024
For internal, 2 weeks in an hotel o working hours: between monday to sunday – 07:00 am - 10:00 pm; (07:00am – 04:00pm / 09:00am – 06:00pm / 01:00pm – 10:00pm) rotative shifts; 2 days offo training: 5 weeks (9am to 6pm, monday to friday) - paido permanent contract... requisitos do trabalho c1 german......
Sabe quanto pode ganhar como consultor imobiliário? - em empresa líder de mercado - com método comprovado - com as melhores ferramentas informáticas da área - com uma equipa motivada e premiada - total apoio do back office - com formação especializada e coach pessoal - possibilidade de......
Sabe quanto pode ganhar como consultor imobiliário? - em empresa líder de mercado - com método comprovado - com as melhores ferramentas informáticas da área - com uma equipa motivada e premiada - total apoio do back office - com formação especializada e coach pessoal - possibilidade de......
A evolution® é uma marca portuguesa que procura transmitir confiança, integridade e profissionalismo... para te candidatares, envia o teu cv... independentemente de estar no início ou em uma fase de mudança de carreira, se desejas trabalhar no setor imobiliário, a evolution® oferece-te a oportunidade......
A evolution® é uma marca portuguesa que procura transmitir confiança, integridade e profissionalismo... para te candidatares, envia o teu cv... independentemente de estar no início ou em uma fase de mudança de carreira, se desejas trabalhar no setor imobiliário, a evolution® oferece-te a oportunidade......
Informações sobre a função: representar nas ruas a maior organização do mundo neste modelo de acolhimento de crianças; abordagem direta de pessoas nas ruas e no porta a porta sobre o trabalho da organização; angariação de novos amigos sos (doadores regulares) para as aldeias de crianças sos; constantes......
Requisitos do trabalho profile:german c2english b2experience in customer support (preferable) outros dados de posição benefits:excellent remuneration package based on experience, skills and performancelife insurancemeal allowance + transport allowanceprivate health insurancerelocation package:reimbursement......
Informações sobre a função: representar nas ruas a maior organização do mundo neste modelo de acolhimento de crianças; abordagem direta de pessoas nas ruas e no porta a porta sobre o trabalho da organização; angariação de novos amigos sos (doadores regulares) para as aldeias de crianças sos; constantes......
Perfil do candidato - boa capacidade de comunicação; - gosto pelas relações humanas e facilidade no relacionamento interpessoal; - disponibilidade e gosto pelo trabalho com objetivos e foco em resultados, - ambição para usufruir das mais-valias desta profissão: potencial de remuneração muito acima da......
Perfil do candidato - boa capacidade de comunicação; - gosto pelas relações humanas e facilidade no relacionamento interpessoal; - disponibilidade e gosto pelo trabalho com objetivos e foco em resultados, - ambição para usufruir das mais-valias desta profissão: potencial de remuneração muito acima da......