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

149
Vistas
MongoDB: encuentre dónde la lista de documentos anidados tiene más de un campo con un valor mayor que 0

Tengo una colección de documentos de User con la siguiente forma:

 // User { payments: [ { total: number }, ], }

La matriz de payments de documentos anidados de longitud variable contiene totals numéricos con valores iguales o superiores a 0.

¿Cómo encuentro una lista de Users donde la duración de payments con total > 0 es mayor que uno?

Por ejemplo, quiero encontrar documentos como estos:

 // two totals > 0 👍 { payments: [ { total: 50 }, { total: 50 }, ], } // two totals > 0 👍 { payments: [ { total: 50 }, { total: 0 }, { total: 50 }, ], } // three totals > 0 👍 { payments: [ { total: 50 }, { total: 50 }, { total: 0 }, { total: 50 }, ], }

pero no estos documentos:

 // not enough totals > 0 👎 { payments: [ { total: 50 }, { total: 0 }, { total: 0 }, ], } // not enough totals > 0 👎 { payments: [ { total: 0 }, { total: 0 }, ], }

¡Gracias por cualquier ayuda de antemano!

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

0

Demostración: https://mongoplayground.net/p/AG8Q1GqSEcl

Tienes que usar una consulta de agregación.

matriz de $filtro donde el total es mayor que 0 y obtenga el $tamaño de la matriz filtrada. Comprobar si es mayor que 1 $match

$proyecto

 db.collection.aggregate([ { $project: { payments: "$payments", paymentsGreaterThanZero: { $size: { $filter: { input: "$payments", as: "item", cond: { $gt: [ "$$item.total",0 ] } } } } } }, { $match: { paymentsGreaterThanZero: { $gt: 1 } } }, { $project: { payments: "$payments" } } ])
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