sql >> Database teknologi >  >> NoSQL >> MongoDB

2 måder at tilføje en værdi til et array i MongoDB

Hvis du har en samling dokumenter i MongoDB, der indeholder arrays, kan du tilføje nye værdier til disse arrays, hvis det kræves.

Afhængigt af dine specifikke krav kan du bruge $push operatoren eller $addToSet operatør.

$push Operatør

Antag, at vi har en samling kaldet products med følgende dokumenter:

{ "_id" :1, "product" :"Flagermus", "størrelser" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hat" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L" ] } 

Og lad os sige, at vi ønsker at tilføje en værdi til arrayet i dokument 3.

Vi kan bruge $push i forbindelse med update() for at tilføje værdien:

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

Lad os se på samlingen igen for at bekræfte ændringen:

db.products.find() 

Resultat:

{ "_id" :1, "product" :"Flagermus", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Hat" , "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Cap", "sizes" :[ "M", "L", "XL" ] }

Vi kan se, at værdien XL er blevet tilføjet til arrayet i dokument 3.

$push operator kan også bruges med forskellige modifikatorer, såsom $position , $sort , og $slice .

Du kan også tilføje flere værdier til arrayet ved at bruge $each modifikator.

Se MongoDB $push for eksempler.

$addToSet Operatør

$addToSet operatoren fungerer på samme måde som $push , bortset fra et par ting:

  • Hvis den værdi, du forsøger at tilføje, allerede findes i arrayet, vil den ikke blive tilføjet.
  • $position , $sort , og $slice modifikatorer kan ikke bruges med $addToSet .

Antag, at vores samling ser sådan ud:

{ "_id" :1, "product" :"Flagermus", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Hat", "sizes" :[ "S", "L", "XL" ] }{ "_id" :3, "product" :"Kasket", "størrelser" :[ "S", "M" , "L", "XL" ] }

Lad os indsætte flere værdier i arrayet i dokument 2:

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

Lad os nu tjekke samlingen igen:

db.products.find() 

Resultat:

{ "_id" :1, "product" :"Flagermus", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Hat", "sizes" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "product" :"Kasket", "størrelser" :[ "S", "M", "L", "XL" ] }

Vi kan se, at de to værdier blev tilføjet til arrayet i dokument 2 som forventet.

Dette eksempel bruger $each modifikator, som du også kan bruge med $push operatør.

Jeg brugte kun $each modifikator, fordi jeg tilføjede flere værdier. Hvis jeg kun brugte én værdi, kunne jeg have udeladt $each modifikator, og syntaksen ville have lignet ovenstående $push eksempel.

Som nævnt, hvis værdien allerede eksisterer, vil den ikke blive tilføjet. Hvis du tilføjer et array med begge operatorer, vil hele arrayet blive tilføjet som en separat værdi inden for det eksisterende array.

Se MongoDB $addToSet for flere eksempler.


  1. Korrekt måde at bruge Redis Connection Pool i Python

  2. Sådan implementeres MongoDB indlejret $elemMatch Query i C#

  3. Kan ikke oprette forbindelse til MongoDB (MongoLabs) via C#-klient

  4. Hvordan laver jeg forespørgsler uden store og små bogstaver på Mongodb?