MongoDB $ addToset

MongoDB $ addToset
Operatøren på $ AddToset er blant disse array -oppdateringen () -operatørene som MongoDB tilbyr for å oppdatere array -feltverdien i dokumenter. Operatøren på $ Addtoset krevde at unike oppføringer ble lagt til eller vedlagt i feltet Spesifiserte matriser. Hvis en verdi allerede er til stede i den gitte matrisen, henter $ addtoset den eksakte matrisen uten modifisering. Operatøren $ AddToset må sørge for at en matrise ikke vil inneholde noen duplikatelementer når den er oppdatert, men det er mulig for rekkefølgen på en matriser å endre etter at en verdi er lagt til.

Hvordan bruke MongoDB $ addToset -operatøren?

$ Addtoset -operatøren er ansatt i oppdateringsmetoden () metoden til MongoDB. $ Addtoset -operatøren legger inn parameteren "felt" og "tillegg". "Feltet" indikerer kolonnen i dokumentet som skal oppdateres. "Tillegget" er parameteren som tildeles verdien som skal settes inn i matrisen til det tilsvarende feltet. Før vi bruker $ addtoset -operatøren i MongoDB -spørringen, må vi etablere samlingen. Her har vi en MongoDB -samling av "kurs" som vi har brukt InsertMany () -spørringen for å legge til følgende dokumenter.

db.Kurs.INSERTMANY ([

"_id": 1,
"Felt": "Det",
"Kurs": ["Web Development", "Database", "Python"],
"Credithours": [5, 2, 7]
,

"_id": 2,
"Felt": "CS",
"Kurs": ["Python", "Networking", "Computing"],
"Credithours": [8, 4, 2]
,

"_id": 3,
"Felt": "SE",
"Kurs": ["Data Science", "Python", "IBM"],
"Credithours": [2, 9, 5]

])

Resultatet av å legge til dokumentene til "Courses" -samlingen blir presentert nedenfor.

anerkjent: sant, innsats: '0': 1, '1': 2, '2': 3

Eksempel nr. 1: Spørring av $ addtoset -operatøren i MongoDB for å legge til verdien i et matrisefelt

Her legger vi til den nye verdien i feltet ved å bruke $ addtoset -operatøren. I MongoDB -spørringen har vi brukt oppdateringsmetoden () på samlingen “Courses”. Update () -metoden legger videre til tilstanden “Felt”: “CS” før $ AddToset -operatøren. For det første blir dokumentet søkt som er satt med verdien “CS” mot kolonnen “Felt” i samlingen. Når dokumentet vil bli matchet, vil $ addtoset -operatøren fortsette med operatøren for å legge til verdien. Vi har gitt $ AddToset -operatøren med array -feltet "kurs" for å legge til et nytt verdiskapelement "-kontoer".

db.Kurs.Oppdatering ("Felt": "CS", $ addToset: "Courses": "Accounts")

Utgangen viser at det nye array -elementet “kontoer” er lagt ved feltet “Kurs”.


Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0

Vi har undersøkt samlingen vår for å bekrefte modifiseringen. Array -feltet “Courses” er vellykket endret med den nye verdien “Accounts”.


_id: 2,
Felt: 'CS',
Kurs: ['Python', 'Networking', 'Computing', 'Accounts'],
Credithours: [8, 4, 2]

Eksempel 2: Spørring av $ AddToset -operatøren i MongoDB for å legge til et nytt felt

I spørringen ovenfor brukes $ addtoset -operatøren for å legge til den nye verdien i det eksisterende feltet. Videre kan vi sette inn det nye feltet i dokumentet ved å bruke $ addtoset -operatøren i Update () -metoden. La oss få følgende MongoDB -spørring. Vi har angitt oppdateringsmetoden der uttrykket ““ _id ”: 2” er gitt for å matche det aktuelle dokumentet. Deretter tildelte vi $ addtoset -operatøren til å legge til det nye feltet sammen med den nye verdien. Her har vi lagt til array -feltet “Lærer” som ikke eksisterer i dokumentene til samlingen “Courses”. "Lærer" -feltet er tildelt med en rekke lærernes navn.

db.Kurs.Oppdater(
"_id": 2,
$ addToset: "lærere": ["Mr Sam", "MS Alice"]
)

"ModifiedCount: 1" i følgende utdata viser at dokumentet oppdateres med det nye feltet "Lærere" og matriseverdiene.


Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0

Når dokumentene er sjekket, dukket det opp med de nye oppdateringsresultatene som følger:


_id: 2,
Felt: 'CS',
Kurs: ['Python', 'Networking', 'Computing', 'Accounts'],
Credithours: [8, 4, 2, 7, 3],
Lærere: [['Mr Sam', 'MS Alice']]

Eksempel nr. 3: Spørring av $ addtoset -operatøren i MongoDB for å legge til en matrise i den eksisterende matrisen

I tillegg kan vi legge til en helt ny matrise til den allerede nåværende matrisen ved hjelp av $ addtoset -operatøren. Hele matrisen blir lagt til som en egen matrise. Her har vi gitt et spørsmål til denne uttalelsen. Vi har en oppdatering () -metode som vi har tildelt en tilstand “_id”: 3 som første parameter. Så dokumentet med "_id" -nummeret "3" vil bli matchet med oppdateringsbetingelsen, og deretter fortsetter neste parameter. Neste parameter for Update () -metoden er “$ addtoset” -metoden for å legge arrayen til den eksisterende matrisen. Vi har spesifisert matrisen “[3, 1, 2]” til feltet “Credithours”. Denne matrisen vil bli lagt til som en egen matrise innen den eksisterende rekke feltet "Credithours".

db.Kurs.Oppdater(
"_id": 3,
$ addToset: "credithours": [3, 1, 2]
)

Følgende informasjon indikerer at matrisen legges til i den nåværende matrisen:


Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0

Dokumentet som vises nedenfor er oppdatert med den nye modifiseringen vi har gjort.


_id: 3,
Felt: 'Se',
Kurs: ['Data Science', 'Python', 'IBM'],
Credithours: [2, 9, 5, [3, 1, 2]]

Eksempel 4: Spørring av $ AddToset -operatøren i MongoDB for å legge til flere verdier

$ AddToset gjør det mulig for oss å legge til mer enn en verdi samtidig i en matrise ved å ta $ hver operatør som en parameter. $ Hver operatør er ansatt for å legge til flere oppføringer til en medfølgende matrise. Her har vi gitt et spørsmål der vi må tilfredsstille tilstanden ““ _id ”: 2” av oppdateringen () -metoden. Deretter har vi $ addtoset -operatøren der vi har ansatt $ hver operatør for å legge til de to verdiene “7” og “3” i feltet “Credithours”.

db.Kurs.oppdatering ("_id": 2, $ addToset: "credithours": $ hver: [7,3]);

Ovennevnte spørring som ble utført, viste bekreftelsesutgangen som indikerer at verdiene er satt inn i det matchede dokumentet.


Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0

De to matriseelementene “7” og “3” er lagt i array -feltet “Credithours”.


_id: 2,
Felt: 'CS',
Kurs: ['Python', 'Networking', 'Computing', 'Accounts'],
Credithours: [8, 4, 2, 7, 3]

Eksempel 5: Spørring av $ AddToset -operatøren i MongoDB for å legge til den eksisterende verdien

Når matriseverdien allerede er til stede, prøver vi å sette inn den verdien igjen i feltet, så gjør $ addsetto -operatøren ingenting. For å si det på en annen måte, tilfører $ addtoset bare en verdi hvis man ikke allerede eksisterer. Der har vi gitt en spørring i skallet til MongoDB der vi benyttet Update () -metoden. Inne i Update () -metoden har vi gitt betingelsen om at dokumentet har “_id” lik “1”. Etter det kalte vi $ AddToset -operatøren som tar feltet "kurs" med "Addition" -parameterverdien "Database". "Databasen" eksisterer allerede i det spesifiserte dokumentet slik at $ AddToset -operatøren ikke vil oppdatere denne verdien.

db.Kurs.Oppdater(
_id: 1,
$ addToset: "kurs": "database"
)

Vi kan se at alternativet "ModifiedCount" har en "0" -verdi som viser at dokumentet ikke er endret.


Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 0,
UPSERTEDCOUNT: 0

Det matchede dokumentet blir også sjekket nedenfor for å vise at allerede eksisterende verdier ikke kan legges til igjen av $ AddToset -operatøren.


_id: 1,
Felt: 'Det',
Kurs: ['Web Development', 'Database', 'Python'],
Credithours: [5, 2, 7, 3]

Konklusjon

Artikkelen handler om diskusjonen om MongoDB $ addtoset -operatøren. Vi har sett $ AddToset -operasjonen i MongoDB -oppdateringsspørsmålet. Det første eksemplet er å $ addToset -operatøren legge til den unike verdien i rekke dokumentet. Vi har da lagt til ikke-eksistensfeltet med $ addtoset-operatøren. Den nye matrisen er også lagt til den allerede spesifiserte matrisen. Etter dette la vi opp matrisen med flere oppføringer, og så forsøkte vi å sette inn duplikatverdien i matrisen med $ AddToset -operatøren.