Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

297
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!