V MongoDB můžete použít $pop
operátor k odstranění prvního nebo posledního prvku z pole.
Použijte $pop
ve spojení s metodou, jako je update()
aktualizovat zadaný dokument změnou.
Použijte -1
pro odstranění prvního prvku a 1
k odstranění posledního.
Příklad
Předpokládejme, že máme kolekci nazvanou products
s následujícími dokumenty:
{ "_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" ] }
Odstraňte první prvek
První prvek pole v dokumentu 1 můžeme odstranit takto:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Tato zpráva nám říká, že jeden dokument se shodoval a jeden (tj. stejný dokument) byl upraven.
Pojďme se nyní podívat na kolekci:
db.products.find()
Výsledek:
{ "_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" ] }
Vidíme, že první prvek pole v dokumentu 1 byl odstraněn.
Odstranit poslední prvek
Nyní odstraníme poslední prvek z pole v dokumentu 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Výstup:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Nyní znovu zkontrolujeme sbírku:
db.products.find()
Výsledek:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Můžeme vidět, že poslední prvek byl odstraněn z pole v dokumentu 2.
Aktualizovat všechny dokumenty
Zde je příklad, který používá updateMany()
způsob aktualizace všech dokumentů:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Výstup:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
A znovu zkontrolujte sbírku:
db.products.find()
Výsledek:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Případně můžete použít update()
způsob aktualizace více dokumentů zadáním multi: true
.