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

99
Vistas
mapear a través de la matriz y devolver todas las coincidencias mongodb

Quiero mapear a través de una matriz de objetos que se guardaron en la base de MongoDB Database y devolver todos los índices que coincidan con mi condición...

por ejemplo, aquí está la matriz ...

 orders: [ { foodId: { type: mongoose.Types.ObjectId, ref: "Foods", }, placeId: { type: mongoose.Types.ObjectId, required: true, ref: "Places", }, qty: { type: Number, required: true, default: 1, }, price: { type: Number, required: true, }, }, ],

Quiero obtener todos los alimentos que se piden en un lugar, probé esta consulta pero no funcionó y solo devuelve la primera coincidencia e ignoro el resto.

 // HERE IS ORDERS COLLECTION, NOT ORDERS ARRAY THAT CONTAINS OBJECTS const order = await Orders.find({ // HERE IS ORDERS ARRAY THAT CONTAINS THE OBJECTS orders: { $elemMatch: { placeId: mongoose.Types.ObjectId("610ae7be5867510cb43f0537"), }, }, })

esta consulta solo devuelve la primera coincidencia e ignora todo después de eso

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede hacerlo en el servidor usando $filter La consulta a continuación ajusta la matriz de pedidos y conserva solo los pedidos que tienen placeId=2

Datos en

 { "_id": 1, "orders": [ { "foodId": 1, "placeId": 2, "qty": 3, "price": 4 }, { "foodId": 5, "placeId": 6, "qty": 7, "price": 8 } ] }

Consulta

 aggregate( [ { "$addFields": { "orders": { "$filter": { "input": "$orders", "as": "order", "cond": { "$eq": [ "$$order.placeId", 2 ] } } } } } ])

Resultados

 { "_id": 1, "orders": [ { "foodId": 1, "placeId": 2, "qty": 3, "price": 4 } ] }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Tu podrías intentar

 order = await Orders.find(...).toArray();

y luego procese el resultado como cualquier matriz. ¿O es la matriz resultante de longitud uno?

about 4 years ago · Juan Pablo Isaza 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