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

185
Visualizações
Empuje condicional o reemplazo de subdocumento en matriz

Tengo un esquema de usuario,

 const userSchema = new mongoose.Schema({ name:{ type: String, required: [true, "Provide Username"], unique: true }, password: String, orders:[{seriesName: String, order:[Schema.ObjectId], _id: false}] });

Quiero actualizar o modificar el subdocumento en los pedidos: si aún no hay un subdocumento con el nombre de la serie (por ejemplo, "Flash"), entonces, enviaría el nuevo documento. Si hay un subdocumento con el nombre de serie, cambiaría la matriz de orden en el subdocumento.

 app.patch("/users/:series", (req, res)=>{ let userName = req.body.name; let seriesName = req.params.series; let orderString = req.body.order; order = JSON.parse(orderString); let orderIDValues = []; order.forEach(orderIDString=>{ orderIDValues.push(mongoose.Types.ObjectId(orderIDString)) }); User.updateOne( {name: userName}, {$cond:{ if: {$in: [seriesName, "$orders.seriesName"]}, then: {"$orders.seriesName": {$in: [seriesName]}, $set:{order: order}}, else: {$push:{ orders: {seriesName: seriesName, order: order} }}}}, (err, result)=>{ if(!err){ res.send(result); } else{ res.send(err); } } ) });

Todo lo que se devuelve es {"acknowledged":false} He elaborado el código para simplemente enviar un nuevo subdocumento o reemplazar el pedido en el subdocumento apropiado. Estoy sospechando, no entiendo la agregación $cond .

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