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

512
Views
Proyecte el primer elemento de una matriz en un campo nuevo (agregación de MongoDB)

Estoy usando la agregación Mongoose (MongoDB versión 3.2).

Tengo un campo de users que es una matriz. Quiero $project el primer elemento de esta matriz a un nuevo user de campo.

Lo intenté

 { $project: { user: '$users[0]', otherField: 1 }}, { $project: { user: '$users.0', otherField: 1 }}, { $project: { user: { $first: '$users'}, otherField: 1 }},

Pero tampoco funciona.

¿Cómo puedo hacerlo correctamente? Gracias

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Actualizar:

A partir de v4.4 hay un operador dedicado $primero :

 { $project: { user: { $first: "$users" }, otherField: 1 }},

Es un azúcar de sintaxis para el

Respuesta original:

Puedes usar arrayElemAt :

 { $project: { user: { $arrayElemAt: [ "$users", 0 ] }, otherField: 1 }},
over 4 years ago · Santiago Trujillo Report

0

Si se trata de una matriz de objetos y desea utilizar un solo campo de objeto, es decir:

 { "users": [ {name: "John", surname: "Smith"}, {name: "Elon", surname: "Gates"} ] }

puedes usar:

 { $project: { user: { $first: "$users.name" } }

Editar (excluir caso - después del comentario de @haytham)

Para excluir un solo campo de un documento anidado en una matriz, debe realizar 2 proyecciones:

 { $project: { user: { $first: "$users" } }

Que devuelven el primer objeto completo y luego excluyen el campo que no desea, es decir:

 { $project: { "user.name" : 0 }
over 4 years ago · Santiago Trujillo Report

0

A partir de Mongo 4.4 , el operador de agregación $first se puede usar para acceder al primer elemento de una matriz:

 // { "users": ["Jean", "Paul", "Jack"] } // { "users": ["Claude"] } db.collection.aggregate([ { $project: { user: { $first: "$users" } } } ]) // { "user" : "Jean" } // { "user" : "Claude" }
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!