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

156
Visualizações
UpdateOne MongoDB con push usando valor de otro campo

Estoy tratando de enviar un campo existente de mi documento a mi matriz. este es mi esquema:

 var mySchema = new Schema({ level: { type: Number, default: 1 }, mHierarchy: [ { userId: { type: mongoose.Types.ObjectId }, index: { type: Number } } ] })

Estoy tratando de usar UpdateOne y empujar a mHierarchy y establecer el nivel externo en el índice.

lo que he intentado hasta ahora:

 MySchema.updateOne( {'_id': mySchemaId}, $push: { referredHierarchy: { userId: mongoose.Types.ObjectId(id), index: '$$level' } } )}

También probé esto:

 let setQuery= {} setQuery['mHierarchy.' + level + '.userId']= mongoose.Types.ObjectId(userId) setQuery['mHierarchy.' + level + '.index']= '$$temp' MySchema.updateOne( {'_id': mySchemaId}, { $set: setQuery }, {let: {temp: '$level'}} )

y ninguno de los anteriores funciona y me sale este error:

 "CastError: Cast to Number failed for value \"$$temp\" (type string) at path \"index\""

¿Cómo puedo lograr esto usando mangosta?

NOTA: Yo uso MongoDB 5 y "mongoose": 6.0.8

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Primero deberá agregar este campo a la canalización con el operador $set. Prueba este:

 MySchema.updateOne({ _id: mySchemaId }, { $set: { index: "$level", }},{ $push: { referredHierarchy: { userId: mongoose.Types.ObjectId(id), index: "$index", }, }});

Pruebe otra solución por razones de prueba:

 MySchema.updateMany({ _id: mySchemaId },[{ $addFields: { index: "$level", }},{ $push: { referredHierarchy: { index: "$index", }, }}]);

updateOne no acepta operadores de agregación de canalización, así que intente con este updateMany para realizar pruebas.

about 4 years ago · Juan Pablo Isaza 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