MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Removendo um elemento da matriz no mongodb


O $pop O operador removerá o primeiro ou o último elemento da matriz, que pode não ser necessariamente o correto.

Se você quiser um elemento específico, você pode $pull o item com critérios definidos:
   model.registerCompany.findOneAndUpdate({companyKey:"a key"},
    {$pull:{onlineEmployees:"John"}},

Você precisa ter certeza de que o valor no array é único, para $pull remove todos os elementos correspondentes ao nome 'John'.

Se existirem valores idênticos no array, você precisa usar $unset e $ operador posicional para definir o valor do elemento de destino para null (infelizmente $unset não irá remover elementos) e então use $pull para remover o elemento com null valor. Para fazer isso, você deve garantir que o valor válido não possa ser null . Nesse caso, o código poderia ser assim:
model.registerCompany.findOneAndUpdate({companyKey:"a key", onlineEmployees:"John"},{ $unset: { "onlineEmployees.$" : '' } } ) 
model.registerCompany.findOneAndUpdate({companyKey:"a key"},{ $pull: { "onlineEmployees" : null } } )