W MongoDB możesz użyć $pop operator do usunięcia pierwszego lub ostatniego elementu z tablicy.
Użyj $pop w połączeniu z metodą taką jak update() aby zaktualizować określony dokument ze zmianą.
Użyj -1 aby usunąć pierwszy element i 1 aby usunąć ostatnie.
Przykład
Załóżmy, że mamy kolekcję o nazwie products z następującymi dokumentami:
{ "_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" ] } Usuń pierwszy element
Możemy usunąć pierwszy element tablicy w dokumencie 1 w ten sposób:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Ta wiadomość mówi nam, że jeden dokument pasował, a jeden (tj. ten sam dokument) został zmodyfikowany.
Przyjrzyjmy się teraz kolekcji:
db.products.find() Wynik:
{ "_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" ] } Widzimy, że pierwszy element tablicy w dokumencie 1 został usunięty.
Usuń ostatni element
Teraz usuńmy ostatni element z tablicy w dokumencie 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Teraz ponownie sprawdźmy kolekcję:
db.products.find() Wynik:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] } Widzimy, że ostatni element został usunięty z tablicy w dokumencie 2.
Aktualizuj wszystkie dokumenty
Oto przykład, który używa updateMany() metoda aktualizacji wszystkich dokumentów:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
) Wyjście:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 } I ponownie sprawdź kolekcję:
db.products.find() Wynik:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Alternatywnie możesz użyć update() metoda aktualizacji wielu dokumentów przez określenie multi: true .