Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

300
Visualizações
Insertar en la matriz si el valor no está presente en más matrices

Estoy creando una aplicación web de foro en la que al usuario le puede gustar/no gustar la publicación de otros usuarios.

Tengo el siguiente modelo, que representa una publicación:

 [ { _id:"0002253, title:"My first post", likes:[], dislikes:[] }, { _id:"0002254, title:"My second post", likes:[], dislikes:[] }, { _id:"0002255, title:"My third post", likes:[], dislikes:[] }, ]

Cuando un usuario envía un me gusta o no me gusta, la identificación de este último se insertará en la matriz correspondiente (me gusta o no me gusta).

Cada usuario puede, para cada publicación, insertar solo un me gusta o un disgusto (no ambos).

La consulta que utilicé para la inserción es la siguiente:

 let vote_result = await Poll.updateOne( { _id: poll_id, $and: [ { "likes": { $nin: [MY_ID] } }, { "dislikes": { $nin: [MY_ID] }}, ], }, { $addToSet: { "likes": MY_ID, }, },

Entonces, en teoría, la consulta debe insertar MY_ID en la matriz de gustos o disgustos si y solo si MY_ID no está presente en ninguna de las matrices.

El problema es que la consulta aún escribe MY_ID en la matriz de Me gusta (incluso si MY_ID está presente en No me gusta) y viceversa.

Supongamos ahora que quiero dejar un 'Me gusta' en una publicación:

Fase 1:

 likes:[] dislikes:[]

(Puedo gustar o disgustar, funciona).

Fase 2:

 likes: [MY_ID] dislikes:[]

(No puedo volver a enviar Me gusta, funciona, pero todavía puedo no me gusta; no debería permitirme votar nuevamente).

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda