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

518
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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