Come funziona l'operatore $ setoninsert in mongodb
L'operatore $ setoninsert di MongoDB esegue le operazioni aggiornate () che hanno il flag UpSert, il che implica che questa operazione inserisce solo i dati. Per iniziare il funzionamento dell'operatore $ Setoninsert, dobbiamo creare la collezione MongoDB. Qui, abbiamo intitolato la collezione come "WorkerCollection" e inserito alcuni documenti in questa raccolta. Per inserire i documenti nelle "WorkerCollections", viene distribuita la query InsertMany del MongoDB che inserisce la maggior parte del documento allo stesso tempo. La query di più inserzioni di documenti in "WorkerCollection" è rappresentata nel seguente:
db.Scollection.insertOne (
"id": 1,
"Nome": "Bella",
"Age": 31,
"Stipendio": 50000,
"Altezza": 6.5,
"Ore lavorative" :
"Day": "8 ore",
"Night": "5hrs"
,
"Dettagli" :
"Città": "NewYork",
"Telefono": "0842888123"
,
"id": 2,
"Nome": "Kevin",
"Age": 29,
"Stipendio": 45000,
"Altezza": 5.9,
"Ore lavorative" :
"Day": "6hrs",
"Night": "3 ore"
,
"Dettagli" :
"Città": "Houston",
"Telefono": "8329423099"
,
"id": 3,
"Nome": "Steven",
"Age": 34,
"Stipendio": 39000,
"Altezza": 6.4,
"Ore lavorative" :
"Day": "9hrs",
"Night": "2hrs"
,
"Dettagli" :
"Città": "California",
"Telefono": "812373002"
)
Quando i documenti nella raccolta fornita vengono inseriti correttamente, si ottiene la seguente uscita sulla shell Mongodb:
riconosciuto: vero,
InsertedId: ObjectID ("63B56A6707E9102DCADCF96A")
Esempio 1: utilizzando l'operatore $ setoninsert per inserire il nuovo documento
Abbiamo già inserito tre documenti nella collezione MongoDB, "WorkerCollection". Ora possiamo aggiungere un nuovo documento nella stessa collezione con $ Setoninsert Operator. Abbiamo la seguente query in cui utilizziamo il metodo Update () per specificare l'espressione "ID": 4 ". Quindi, impieghiamo l'operatore "$ setoninsert" per impostare i campi "età e" stipendio "con i nuovi valori che non esistono nel documento. Successivamente, applichiamo il flag UpSert con il valore "vero". Innanzitutto, il nuovo documento viene creato con "ID": 4. Quindi, l'operatore $ setoninsert assegna i valori al campo corrispondente del nuovo documento.
db.Scollection.Aggiorna ("id": 4, $ setoninsert: "age": 35, "stipendio": 40000, upsert: true);
L'esecuzione della precedente query UPSert restituisce l'output mostrato nella seguente dimostrazione. The WriteResults ha l'opzione UpSertedCount che ha il valore di "1", indicando che il documento è aggiornato nella raccolta.
riconosciuto: vero,
InsertedId: ObjectID ("63B56CCA378B59E68E0C4608"),
MatchedCount: 0,
ModifiedCount: 0,
UpSertedCount: 1
Esempio 2: utilizzando l'operatore $ setoninsert per inserire i nuovi campi incorporati in un nuovo documento
L'operatore $ setoninsert viene utilizzato anche per il documento incorporato. Possiamo utilizzare l'operatore $ setoninsert con la funzione aggiornamento () e l'opzione UPSert che è assegnata a TRUE. Ecco una rappresentazione della query per inserire il nuovo documento incorporato nel nostro "WorkerCollection". Utilizziamo il metodo update () in cui impostiamo i dettagli ".Città ":" Chicago " Espressione prima. Quindi, applichiamo l'operatore $ Setoninsert in cui i campi incorporati, "Hourshours.Day "e" Working -Hours.Notte ”, sono impostati con nuovi valori. L'opzione UPSert è anche impostata con il valore TRUE per aggiornare il documento incorporato.
db.Scollection.aggiornamento ("dettagli.Città ":" Chicago ",
$ setoninsert: "workinghours.Giorno ":" 5 ore "," Hourshours.Notte ":" 5hrs ", upsert: true)
Il writeResult nel seguente output indica che l'UpSertedCount è 1, il che significa che l'operazione precedente ha esito positivo.
riconosciuto: vero,
InsertedId: ObjectID ("63B584D4378B59E68E0C4B36"),
MatchedCount: 0,
ModifiedCount: 0,
UpSertedCount: 1
Esempio 3: utilizzando l'operatore $ setoninsert per aggiornare il documento
C'è un altro caso dell'operatore $ setoninsert di MongoDB. Gli esempi precedenti hanno utilizzato l'operatore $ setoninsert per inserire il nuovo documento. Ora, in questo caso di MongoDB, utilizziamo l'operatore $ Setoninsert per aggiornare il documento che è già presente nella collezione "WorkerCollection". Qui, abbiamo una query update () che imposta la condizione che aggiorna il documento il cui valore di campo "ID" è "2". Quando il documento è abbinato, viene eseguita la prossima operazione in cui utilizziamo gli operatori $ set e $ setoninsert. L'operatore $ set è specificato con il valore contro i campi "età" e "altezza". Quindi, l'operatore $ setoninsert viene distribuito per inserire il campo Nome con il valore "Carle" nel documento esistente. Alla fine, assegniamo il valore reale all'opzione UpSert per operare.
db.Scollection.aggiornamento(
"id": 2,
$ set: Age: 40, altezza: 5.7,
$ setoninsert: nome: "carle"
,
upSert: true
)
Il documento viene aggiornato correttamente e il seguente output viene mostrato con il valore dell'opzione UpSertCount che è impostato su True:
riconosciuto: vero,
inseritedid: 2,
MatchedCount: 0,
ModifiedCount: 0,
UpSertedCount: 1
Esempio 4: utilizzando l'operatore $ setoninsert per aggiornare il documento senza funzionamento UPSERT
Successivamente, abbiamo un caso dell'operatore $ Setoninsert in cui il documento è abbinato e modificato ma non ci sono risultati UPSert. Forniamo la query in cui aggiorniamo il documento utilizzando il metodo Update (). Il metodo update () è ulteriormente implementato con l'operazione in cui l'espressione viene prima assegnata e il campo "ID" ha il valore di "1". Successivamente, invociamo l'operatore $ set per modificare i campi specificati e l'operatore $ setoninsert per impostare il campo "nome" con il nuovo valore che è "Alex". Il valore True UpSert viene assegnato dopo l'operatore $ Setoninsert.
db.Scollection.aggiornamento(
id: 1,
$ set: stipendio: 60000, altezza: 4.98,
$ setoninsert: nome: "Alex"
,
upSert: true
)
Possiamo vedere che MatchEdCount e ModifiedCount sono impostati con il valore di "1". UpSertCount ha un valore "zero" che indica che l'operazione UpSert non viene eseguita e il nome del "campo" non viene aggiornato.
riconosciuto: vero,
inseritedid: null,
MATCHEDCOUNT: 1,
ModifiedCount: 1,
UpSertedCount: 0
Esempio 5: utilizzando l'operatore $ Setoninsert per il documento abbinato
Il prossimo è il funzionamento dell'operatore $ setoninsert per verificare se questo operatore funziona correttamente con il documento di corrispondenza. L'operatore $ setoninsert è inefficace con i documenti già esistenti. Abbiamo la seguente query in cui abbiamo l'operatore $ setoninsert all'interno del metodo update (). L'operatore $ Setoninsert imposta i campi incorporati, "City" e "Telefono", con il valore già presente nel documento. Qui, l'operazione UPSert ignora semplicemente l'operatore $ setoninsert perché i valori specificati sono già situati nel documento.
db.Scollection.Aggiornamento ("nome": "Kevin",
$ setoninsert: "Dettagli.Città ":" Houston ",
"Dettagli.Telefono ":" 8329423099 ",
upSert: true)
I risultati hanno appena riconosciuto il documento abbinato. L'operazione UpSert non è riuscita in questo caso come mostrato nel seguente:
riconosciuto: vero,
inseritedid: null,
MATCHEDCOUNT: 1,
ModifiedCount: 0,
UpSertedCount: 0
Conclusione
Abbiamo dimostrato dell'operatore MongoDB $ Setoninsert. Abbiamo imparato a utilizzare questo operatore con le query MongoDB. L'operatore $ setoninsert viene applicato nel metodo update () per aggiornare il documento nuovo o specificato. La possibile illustrazione del caso è fornita in questo articolo in cui abbiamo inserito il nuovo documento e il nuovo documento incorporato con l'aiuto dell'operatore $ Setoninsert. Successivamente, abbiamo chiamato l'operatore $ Setoninsert per aggiornare il documento già presente e il documento abbinato.