sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $pop

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 .


  1. Redis, bude téma (pub/sub) vždy doručeno alespoň jednomu předplatiteli?

  2. Meteorická stránka se obnovuje kliknutím na tlačítko

  3. Jaký je doporučený přístup k databázím s více nájemci v MongoDB?

  4. Jak se zotavit z vrácení MongoDB?