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

3 maneiras de remover um valor de uma matriz no MongoDB


O MongoDB fornece alguns operadores que permitem remover valores de arrays.

Esses incluem:
  • $pull
  • $pullAll
  • $pop

O $pull Operador


O $pull O operador remove de uma matriz existente todas as instâncias de um valor ou valores que correspondam a uma condição especificada.

Suponha que tenhamos uma coleção chamada products com os seguintes documentos:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Podemos remover um elemento do array no documento 1 assim:
db.products.update( 
  { _id: 1 }, 
  { $pull: { sizes: "XXL" } } 
)

Agora, quando verificamos a coleção, podemos ver que XXL foi removido do documento 1 conforme especificado:
db.products.find()

Resultado:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

O $pullAll Operador


O $pullAll O operador remove todas as instâncias dos valores especificados da matriz.

Suponha que temos uma coleção com os seguintes documentos:
{ "_id" : 1, "bar" : [ 1, 7, 2, 3, 8, 7, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

E queremos remover todos os valores de 7 da matriz no documento 1.

Nós podemos fazer isso:
db.foo.update( 
  { _id: 1 }, 
  { $pullAll: { bar: [ 7 ] } } 
)

Isso remove ambas as ocorrências de 7 da matriz no documento 1.

Podemos verificar isso verificando a coleção:
db.foo.find()

Resultado:
{ "_id" : 1, "bar" : [ 1, 2, 3, 8, 1 ] }
{ "_id" : 2, "bar" : [ 0, 1, 8, 17, 18, 8 ] }
{ "_id" : 3, "bar" : [ 15, 11, 8, 0, 1, 3 ] }

Podemos ver que o array no documento 1 teve todos os seus 7 valores removidos conforme especificado.

Enquanto $pullAll é semelhante a $pull , a diferença é que $pullAll remove os elementos que correspondem aos valores listados. Isso é diferente de $pull , onde você remove valores especificando uma consulta.

O $pop Operador


O $pop operador remove o primeiro ou último elemento de uma matriz.

Forneça um valor de -1 para remover o primeiro elemento e 1 para remover o último.

Suponha que tenhamos uma coleção chamada products com os seguintes documentos:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

O código a seguir remove o último elemento da matriz no documento 1:
db.products.update( 
  { _id: 2 }, 
  { $pop: { sizes: 1 } } 
)

Podemos verificar isso verificando a coleção:
db.products.find()

Resultado:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }