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

225
Vistas
Encuentre documentos de mongodb basados en una matriz de objetos que contiene dos campos

Ejemplo: Mongo db collection:

 [ { "user_id": 1, "lead_id": 901, ... ... }, { "user_id": 2, "lead_id": 902, ... ... }, { "user_id": 2, "lead_id": 903, ... ... }, { "user_id": 3, "lead_id": 999, ... ... }, ]

Tengo una serie de objetos:

 const reqArr = [ { "user_id": 1, "lead_id": 901, }, { "user_id": 2, "lead_id": 999, } ]

Quiero consultar la base de datos en función de user_id y lead_id presentes en cada objeto de la matriz reqArr . algo como esto o con tubería agregada

 Model.find(reqArr)

Mi salida deseada sería algo como esto:

 [{ "user_id": 1, "lead_id": 901, ... ... }]

Solo sé cómo consultar en función de la matriz de un campo como Model.find({_id: {"$in": [array of ids ]}}) pero no con más de un campo en una matriz de objetos. ¿Alguna idea o solución para lograr algo como el resultado anterior o la negación del resultado anterior? Solo necesito qué objetos en reqArr están presentes en la colección db o cuáles no. Gracias.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La forma más sencilla de hacer lo anterior sería esta:

 const results = await Promise.all(reqArr.map(req => { const { user_id, lead_id } = req; return Model.findOne({ user_id, lead_id }); }));

Asignamos sobre cada elemento en reqArr . Para cada elemento ( req ), lo desestructuramos en dos variables user_id y lead_id .

Luego buscamos un solo documento (supongo que solo hay un documento para cada par user_id y lead_id , de lo contrario, será necesario ajustarlo ligeramente).

Luego devolvemos la promesa findOne , lo que da como resultado una serie de promesas que pasamos a Promise.all para esperarlas todas de forma asíncrona.

Esto debería generar una matriz plana de resultados que coincidan con los pares lead_iq / user_id en reqArr .

Si algunos de estos combos no están presentes en la base de datos, esos elementos de la matriz no estarán undefined y podrá manejarlos como lo necesite.

over 4 years ago · Santiago Trujillo Denunciar

0

simple $or

 db.collection.aggregate([ { "$match": { "$or": [ { "user_id": 1, "lead_id": 901 }, { "user_id": 2, "lead_id": 902 } ] } } ])

parque infantil mongo


nodo

 const reqArr = [ { "user_id": 1, "lead_id": 901, }, { "user_id": 2, "lead_id": 999, } ] Model.find({ "$or": reqArr})
over 4 years ago · Santiago Trujillo Denunciar
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