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

467
Views
¿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 answers
Answer question

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 Report

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 Report
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!