Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

296
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda