Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

515
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda