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

2 způsoby, jak připojit hodnotu k poli v MongoDB

Pokud máte kolekci dokumentů v MongoDB, která obsahuje pole, můžete do těchto polí v případě potřeby přidat nové hodnoty.

V závislosti na vašich konkrétních požadavcích můžete použít $push nebo $addToSet operátor.

$push Operátor

Předpokládejme, že máme kolekci nazvanou products s následujícími dokumenty:

{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Klobouk" , "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "produkt" :"Kšiltovka", "velikosti" :[ "M", "L" ] } 

A řekněme, že chceme k poli v dokumentu 3 připojit hodnotu.

Můžeme použít $push ve spojení s update() pro připojení hodnoty:

db.products.update(
   { _id: 3 },
   { $push: { sizes: "XL" } }
) 

Podívejme se znovu na sbírku, abychom ověřili změnu:

db.products.find() 

Výsledek:

{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Klobouk" , "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "produkt" :"Kšiltovka", "velikosti" :[ "M", "L", "XL" ] }

Vidíme, že hodnota XL byl přidán do pole v dokumentu 3.

$push Operátor lze také použít s různými modifikátory, jako je $position , $sort a $slice .

Do pole můžete také přidat více hodnot pomocí $each modifikátor.

Viz MongoDB $push pro příklady.

$addToSet Operátor

$addToSet Operátor funguje podobně jako $push , kromě několika věcí:

  • Pokud hodnota, kterou se pokoušíte přidat, již v poli existuje, nebude přidána.
  • $position , $sort a $slice modifikátory nelze použít s $addToSet .

Předpokládejme, že naše kolekce vypadá takto:

{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Klobouk", "velikosti" :[ "S", "L", "XL" ] }{ "_id" :3, "produkt" :"Kšiltovka", "velikosti" :[ "S", "M" , "L", "XL" ] }

Vložme více hodnot do pole v dokumentu 2:

db.products.update(
   { _id: 2 },
   { 
     $addToSet: { 
        sizes: {
           $each: [ "XXL", "XXXL" ]
        }
      } 
    }
) 

Nyní znovu zkontrolujeme sbírku:

db.products.find() 

Výsledek:

{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Klobouk", "velikosti" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "produkt" :"Kšiltovka", "velikosti" :[ "S", "M", "L", "XL" ] }

Vidíme, že tyto dvě hodnoty byly připojeny k poli v dokumentu 2 podle očekávání.

Tento příklad používá $each modifikátor, který můžete také použít s $push operátor.

Použil jsem pouze $each modifikátor, protože jsem přidával více hodnot. Pokud bych používal pouze jednu hodnotu, mohl jsem vynechat $each modifikátor a syntaxe by vypadala spíše jako výše uvedený $push příklad.

Jak již bylo zmíněno, pokud hodnota již existuje, nebude přidána. Také u obou operátorů, pokud přidáte pole, bude celé pole přidáno jako samostatná hodnota v rámci existujícího pole.

Viz MongoDB $addToSet pro další příklady.


  1. TTL pro člena sady

  2. Ukládání HASH do aplikace Redis na kolejích

  3. Vyberte záznamy odpovídající hodnotě concat dvou polí v mongodb

  4. Faktory, které je třeba zvážit při výběru MongoDB pro aplikace s velkým objemem dat