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

472
Vistas
¿Cómo obtener la longitud de la matriz en lugar de la matriz completa en find ()?

Tengo una colección mongodb (usando mangosta) ("elementos") que incluye una matriz ("imágenes") entre sus propiedades. Algunos documentos de ejemplo:

 [ { "_id" : ObjectId("543fa67e9672ec37ebe3d026"), "name" : "Alice", "images" : [ { url: "http://images.com/1.jpg" }, { url: "http://images.com/2.jpg" }, { url: "http://images.com/3.jpg" }, ] }, { "_id" : ObjectId("543fa67e9672ec37ebe3d027"), "name" : "Bob", "images" : [ { url: "http://images.com/4.jpg" }, { url: "http://images.com/5.jpg" }, ] }, ]

Quiero implementar una consulta que devuelva, junto con otras propiedades del documento, la longitud de la matriz (y no el contenido de la matriz). Sé que puedo obtener la longitud de la matriz con

 db.items.aggregate([ { "$project" : { "_id" : 0, "imagesLength" : { "$size" : "$images" } } } ])

Pero necesito los valores de imagesLength junto con los documentos devueltos con un hallazgo:

 db.items.findMany( { ...filter }, { name: 1, imagesCount: 1 } );

La pregunta es: ¿cómo puedo obtener la longitud de la matriz junto con los resultados de la find ?

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

0

Puede hacer lo mismo que la proyección de agregación en el segundo argumento de find, a partir de MongoDB 4.4 , como parte de hacer que la proyección de find sea consistente con la etapa $project de agregación,

 db.items.find( { ...filter }, { _id: 0, name: 1, images: { $size: "$images" } })

Patio de recreo

over 4 years ago · Santiago Trujillo Denunciar

0

Puede agregar una etapa de coincidencia al principio en su agregación para filtrar los resultados. Luego puede proyectar todos los campos necesarios y generar los nuevos.

 db.items.aggregate([ { "$match" : { ...filter }, { "$project" : { "imagesLength" : { "$size" : "$images" }, "name": 1 } } ])
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