Hvordan $ setonInInsert -operatøren fungerer i MongoDB
$ SetonInInsert -operatøren av MongoDB utfører oppdateringsoperasjonen () som har opptaksflagget som innebærer at denne operasjonen bare setter inn data. For å begynne driften av $ SetonInInsert -operatøren, må vi opprette MongoDB -samlingen. Her har vi tittelen samlingen som "WorkersCollection" og satte inn noen få dokumenter i denne samlingen. For å sette inn dokumentene i "WORKERCOLLECTIONS", er InsertMany -spørringen til MongoDB distribuert som setter inn hoveddelen av dokumentet samtidig. Spørringen om flere dokumentinnsettinger i "WorkersCollection" er representert i følgende:
db.Workers Collection.Insertone (
"id": 1,
"Navn": "Bella",
"Alder": 31,
"Lønn": 50000,
"Høyde": 6.5,
"Arbeidstid" :
"Dag": "8 timer",
"Night": "5 timer"
,
"Detaljer":
"City": "Newyork",
"Telefon": "0842888123"
,
"id": 2,
"Navn": "Kevin",
"Alder": 29,
"Lønn": 45000,
"Høyde": 5.9,
"Arbeidstid" :
"Dag": "6 timer",
"Night": "3 timer"
,
"Detaljer":
"City": "Houston",
"Telefon": "8329423099"
,
"ID": 3,
"Navn": "Steven",
"Alder": 34,
"Lønn": 39000,
"Høyde": 6.4,
"Arbeidstid" :
"Dag": "9 timer",
"Night": "2 timer"
,
"Detaljer":
"City": "California",
"Telefon": "812373002"
)
Når dokumentene i den medfølgende samlingen er satt inn vellykket, oppnås følgende utgang på MongoDB -skallet:
Anerkjent: sant,
Sett inn: ObjectID ("63B56A6707E9102DCADCF96A")
Eksempel 1: Bruke $ SetonInInsert -operatøren til å sette inn det nye dokumentet
Vi har allerede satt inn tre dokumenter i MongoDB -samlingen, "WorkersCollection". Nå kan vi legge til et nytt dokument i samme samling med $ SetonInInsert -operatøren. Vi har følgende spørring der vi bruker Update () -metoden for å spesifisere “ID”: 4 ”-uttrykk. Deretter bruker vi "$ setonInInsert" -operatøren for å angi "alder" og "lønn" -feltene med de nye verdiene som ikke eksisterer i dokumentet. Etter det bruker vi opptaksflagget med den "sanne" verdien. Først opprettes det nye dokumentet med "ID": 4. Deretter tildeler operatøren $ SetonInsert verdiene til det tilsvarende feltet i det nye dokumentet.
db.Workers Collection.oppdatering ("id": 4, $ setOnInInsert: "alder": 35, "lønn": 40000, upsert: true);
Utførelsen av den forrige spørringen. Forfatteren har alternativet UpsertedCount som har verdien av "1", noe som indikerer at dokumentet er oppsatt i samlingen.
Anerkjent: sant,
Sett inn: ObjectID ("63B56CCA378B59E68E0C4608"),
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1
Eksempel 2: Bruke $ SetonInInsert -operatøren til å sette inn de nye innebygde feltene i et nytt dokument
$ SetonInInsert -operatøren brukes også til det innebygde dokumentet. Vi kan bruke $ SetonInInsert -operatøren med oppdateringsfunksjonen og oppgangsalternativet som er tilordnet True. Her er en representasjon av spørringen for å sette inn det nye innebygde dokumentet i vår "WorkersCollection". Vi bruker oppdateringsmetoden der vi angir “detaljer.By ”:“ Chicago ” uttrykk først. Deretter bruker vi $ SetonInInsert -operatøren der de innebygde feltene, “Working Hours.Dag ”og“ Working Hours.Natt ”, er satt med nye verdier. Oppsamlingsalternativet er også satt med den sanne verdien for å oppdatere det innebygde dokumentet.
db.Workers Collection.Oppdatering ("detaljer.By ":" Chicago ",
$ setonInInsert: "WorkingHours.Dag ":" 5 timer "," Working Hours.Night ":" 5hrs ", Upsert: True)
Forfatteren i følgende utgang indikerer at UPSERTEDCOUNT er 1, noe som betyr at den forrige operasjonen er vellykket.
Anerkjent: sant,
Sett inn: ObjectID ("63B584D4378B59E68E0C4B36"),
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1
Eksempel 3: Bruke $ SetonInInsert -operatøren til å oppdatere dokumentet
Det er et annet tilfelle av $ SetonInInsert -operatøren av MongoDB. De tidligere eksemplene brukte $ SetonInInsert -operatøren for å sette inn det nye dokumentet. Nå, i dette tilfellet av MongoDB, bruker vi $ SetonInInsert -operatøren til å oppdatere dokumentet som allerede er til stede i "WorkersCollection" -samlingen. Her har vi en oppdatering () -spørsmål som angir betingelsen som oppdaterer dokumentet hvis "ID" feltverdi er "2". Når dokumentet blir matchet, oppnås neste operasjon der vi bruker $ Set og $ setonInInsert -operatørene. $ SET -operatøren er spesifisert med verdien mot "alder" og "høyde" -felt. Deretter blir $ setonInInsert -operatøren distribuert for å sette inn navnefeltet med "Carle" -verdien i det eksisterende dokumentet. Til slutt tildeler vi den sanne verdien til alternativet for opptreden for å betjene.
db.Workers Collection.Oppdater(
"id": 2,
$ sett: alder: 40, høyde: 5.7,
$ setonInInsert: navn: "Carle"
,
Upsert: True
)
Dokumentet oppdateres vellykket, og følgende utdata vises med alternativet UpsertCount som er satt til sant:
Anerkjent: sant,
innsats: 2,
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1
Eksempel 4: Bruke $ SetonInInsert -operatøren til å oppdatere dokumentet uten oppgangsoperasjon
Deretter har vi et tilfelle av $ setonInInsert -operatøren der dokumentet er matchet og modifisert, men det er ingen oppgangsresultater. Vi gir spørringen der vi oppdaterer dokumentet ved hjelp av Update () -metoden. Oppdateringsmetoden () metoden implementeres videre med operasjonen der uttrykket først tildeles og "ID" -feltet har verdien av "1". Etter det påkaller vi $ SET -operatøren for å endre de spesifiserte feltene og $ SetonInInsert -operatøren for å angi "Navn" -feltet med den nye verdien som er "Alex". Oppsamlingen True Value er tildelt etter $ SetonInInsert -operatøren.
db.Workers Collection.Oppdater(
id: 1,
$ sett: Lønn: 60000, høyde: 4.98,
$ setonInInsert: navn: "alex"
,
Upsert: True
)
Vi kan se at MatchedCount og ModifiedCount er satt med verdien av “1”. UpsertCount har en "null" -verdi som indikerer at opptaksoperasjonen ikke utføres og "feltet" -navnet ikke oppdateres.
Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0
Eksempel 5: Bruke $ SetonInInsert -operatøren for det matchede dokumentet
Neste er driften av $ SetonInInsert -operatøren for å sjekke om denne operatøren fungerer riktig med det samsvarende dokumentet. $ SetonInInsert -operatøren er ineffektiv med de allerede eksisterende dokumentene. La oss ha følgende spørsmål der vi har $ setonInInsert -operatøren i oppdateringen () -metoden. $ SetonInInsert -operatøren setter de innebygde feltene, "by" og "telefon", med verdien som allerede er til stede i dokumentet. Her ignorerer Upsert -operasjonen ganske enkelt $ SetonInInsert -operatøren fordi de spesifiserte verdiene allerede er lokalisert i dokumentet.
db.Workers Collection.oppdatering ("navn": "kevin",
$ setonInInsert: "detaljer.City ":" Houston ",
"Detaljer.Telefon ":" 8329423099 ",
Upsert: True)
Resultatene erkjente nettopp det matchede dokumentet. Upesert -operasjonen mislyktes i dette tilfellet som sett i følgende:
Anerkjent: sant,
innsats: null,
MatchedCount: 1,
ModifiedCount: 0,
UPSERTEDCOUNT: 0
Konklusjon
Vi demonstrerte om MongoDB $ SetonInInsert -operatøren. Vi lærte å bruke denne operatøren med MongoDB -spørsmål. $ SetonInInsert -operatøren brukes innenfor oppdateringsmetoden for å øke det nye eller spesifiserte dokumentet. Den mulige saksillustrasjonen er gitt i denne artikkelen der vi satte inn det nye dokumentet og det nye innebygde dokumentet ved hjelp av $ SetonInInsert -operatøren. Etter det ringte vi $ SetonInInsert -operatøren for å oppdatere det allerede nåværende dokumentet og det matchede dokumentet.