"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como faço para remover um objeto de um array no MongoDB?

Como faço para remover um objeto de um array no MongoDB?

Publicado em 19/11/2024
Navegar:320

How do I remove an object from an array in MongoDB?

MongoDB: Removendo um objeto de um array

No MongoDB, você pode remover um objeto de um array incorporado em um documento usando o $ operador de puxar. Se você deseja remover um objeto específico de uma matriz, você precisa fornecer uma consulta que corresponda ao objeto exato.

Considere o seguinte documento:

{
   _id: 5150a1199fac0e6910000002,
   name: 'some name',
   items: [{
      id: 23,
      name: 'item name 23'
   },{
      id: 24,
      name: 'item name 24'
   }]
}

Para remover o item com id: 23 do array de itens, use o seguinte comando:

db.mycollection.update(
    { '_id': ObjectId("5150a1199fac0e6910000002") }, 
    { $pull: { items: { id: 23 } } },
    false, // Upsert
    true, // Multi
);

Este comando atualiza o documento removendo o item do array. A consulta especifica o documento usando o campo _id, e o operador $pull tem como alvo a matriz de itens. Dentro da operação $pull, você pode especificar uma consulta que corresponda ao objeto a ser removido. Neste caso, combinamos o objeto com o id: 23.

Implementação do Mongoose/Node.js

No Mongoose, você pode remover um objeto de um array usando o Método pull():

const Model = mongoose.model('Model', new mongoose.Schema({
  items: [{
    id: Number,
    name: String
  }]
}));

Model.update(
  { '_id': '5150a1199fac0e6910000002' },
  { $pull: { items: { id: 23 } } },
  { multi: true }, // Update all matching documents
  (err, result) => { if (!err) console.log(result); }
);

Este código removerá o item com id: 23 da matriz de itens de todos os documentos que correspondem ao _id especificado.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3