No MongoDB, você pode usar o
$pop
operador para remover o primeiro ou o último elemento de uma matriz. Use
$pop
em conjunto com um método como update()
para atualizar o documento especificado com a alteração. Use
-1
para remover o primeiro elemento e 1
para remover o último. Exemplo
Suponha que tenhamos uma coleção chamada
products
com os seguintes documentos:{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Remover o primeiro elemento
Podemos remover o primeiro elemento do array no documento 1 assim:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Essa mensagem nos diz que um documento correspondeu e um (ou seja, o mesmo documento) foi modificado.
Vejamos agora a coleção:
db.products.find()
Resultado:
{ "_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" ] }
Podemos ver que o primeiro elemento do array no documento 1 foi removido.
Remover o último elemento
Agora vamos remover o último elemento do array no documento 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Agora vamos verificar a coleção novamente:
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" ] }
Podemos ver que o último elemento foi removido do array no documento 2.
Atualizar todos os documentos
Aqui está um exemplo que usa o
updateMany()
método para atualizar todos os documentos:db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Saída:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
E reveja a coleção:
db.products.find()
Resultado:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Alternativamente, você pode usar o
update()
método para atualizar vários documentos especificando multi: true
.