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 .