Operatore MongoDB $ ifnull

Operatore MongoDB $ ifnull

Durante l'utilizzo degli operatori, non possiamo solo fare confronti tra gli operandi, ma possiamo anche cercare i valori mancanti, aggiornare i record e molti altri. L'operatore ifnull di MongoDB, uno di questi operatori, ha il suo posto speciale perché controlla se il campo specifico contiene un valore nullo o no. Se il campo particolare ha un valore nullo, possiamo eseguire di conseguenza: sostituire il valore con un nuovo valore o renderlo vuoto. In questo tutorial, imparerai l'uso dell'operatore ifnull di MongoDB usando MongoDB Shell. Pertanto, dovresti installare MongoDB insieme alle sue dipendenze.

Crea database e raccolta

Passiamo all'implementazione di alcune domande nella shell Mongodb per visualizzare l'uso dell'operatore "ifnull" di MongoDB. Prima di allora, stiamo dando un'occhiata alla disponibilità di database attuali. Attualmente, abbiamo 3 database integrati disponibili nella nostra MongoDB secondo le istruzioni "Show DBS". Dobbiamo creare il database fittizio che useremo nei nostri prossimi esempi. Per questo, dovremmo prima creare una raccolta di database.

Test> Mostra dbs
amministratore 40.00 kib
config 60.00 kib
locale 72.00 kib

Controllando le raccolte totali, abbiamo nel nostro database, abbiamo scoperto che per ora non esiste una raccolta e dobbiamo crearne una che è l'istruzione delle "raccolte di spettacoli".

Test> Mostra collezioni

Per creare una nuova raccolta, dovresti eseguire il metodo "createcollection" di MongoDB nella sua shell. Dovrebbe prendere il nome di una raccolta appena creata nei parametri, "dati". Il risultato di output come OK: 1 mostra che la tua raccolta "dati" viene generata correttamente.

Test> db.CreateCollection ("dati")
ok: 1

Quando cerchi tutte le raccolte ora, vedrai una raccolta di nuova produzione elencata lì.

Test> Mostra collezioni
Dati

Dopo aver generato una nuova raccolta nel database MongoDB, quando abbiamo cercato il database, il database "Test" che abbiamo usato senza nemmeno creare viene visualizzato nell'elenco.

Test> Mostra dbs
amministratore 40.00 kib
config 108.00 kib
locale 72.00 kib
Test 144.00 kib

Inserire i record alla raccolta

Per ora, dovresti essere sicuro che la raccolta "dati" sia vuota in quanto non abbiamo aggiunto alcun record ad esso. Pertanto, una raccolta vuota non ha senso e dobbiamo inserire documenti in essa. Dato che abbiamo lavorato per l'operatore "$ ifnull", dovremmo anche aggiungere i campi con i valori null. Pertanto, a partire dall'inserimento di nuovi record documentati nella raccolta "dati", abbiamo provato la funzione insertmany () di MongoDB per inserire più di 1 record contemporaneamente. L'inserimento di un totale di 6 record ha avuto luogo in un solo passaggio.

I record dovrebbero essere in formato array o [] parentesi all'inizio e alla fine dei record. Ogni record dovrebbe essere separato da una virgola "," e staffe ricci "". Quasi tutti i record hanno almeno 2 campi: campo "nome" e "età". Mentre tutti i campi "nome" contengono un valore stringa, ci sono alcuni record in cui il campo "età" non contiene alcun record, valore nullo o indefinito. Dopo la riuscita esecuzione di questa query di inserto per la raccolta "dati", otterrai il riconoscimento nella schermata della shell MongoDB che visualizza gli ID generati automaticamente per ciascun record.

Test> db.Dati.InsertMany ([nome: "Peter", età: 24, nome: "ana", età: null, nome: "Bryan", età: "", nome: "nina", età: 33 , Nome: "John", nome: "Michael", età: undefined])

riconosciuto: vero,
inseritedids:
'0': objectId ("63bc3f53a2e5d7c94c4de66b"),
'1': objectId ("63bc3f53a2e5d7c94c4de66c"),
'2': objectId ("63bc3f53a2e5d7c94c4de66d"),
'3': objectId ("63bc3f53a2e5d7c94c4de66e"),
'4': objectId ("63bc3f53a2e5d7c94c4de66f")
'5': objectId ("63bcbf7552359fabfc4a770e")

Dopo aver inserito un totale di 6 record correttamente nella raccolta "dati" del database "Test" MongoDB, è necessario dare un'occhiata anche a tutti questi record. Per questo, è necessario visualizzare ciascuno dei record di raccolta "dati" nel formato JSON utilizzando la funzione foreach (). Per questo, è necessario trovare tutti i record tramite la funzione "Trova" e quindi applicare la funzione foreach () come visualizzato nell'output di seguito. L'argomento "printjson" è un must qui. L'output per la visualizzazione di tutti i 6 record di raccolta "dati" nel formato JSON è allegato di seguito.

Test> db.Dati.Trovare().foreach (printjson)
_id: objectId ("63bc3f53a2e5d7c94c4de66b"), nome: 'peter', età: 24
_id: objectId ("63bc3f53a2e5d7c94c4de66c"), nome: 'ana', età: null
_id: objectId ("63bc3f53a2e5d7c94c4de66d"), nome: "Bryan", età: "
_id: objectId ("63bc3f53a2e5d7c94c4de66e"), nome: 'nina', età: 33
_id: objectId ("63bc3f53a2e5d7c94c4de66f"), nome: 'John'
_id: objectId ("63bcbf7552359fabfc4a770e"), nome: 'Michael', età: null

Applicare l'operatore "ifnull" sul campo "età" della raccolta "dati" in quanto contiene valori indefiniti e null nei documenti. La funzione aggregata () di un mongodb dovrebbe essere utilizzata per utilizzare l'operatore "ifnull" sul campo "età". Pertanto, abbiamo iniziato la query con il nome di una raccolta. È seguito dalla funzione "aggregata" contenente l'operatore del progetto per proiettare nel campo particolare su cui verrà applicato l'operatore "ifnull". Il campo "Nome" è impostato su 1 in modo che possa essere visualizzato. L'operatore "ifnull" contiene due argomenti come ["", ""] applicato al campo "età". L'output di questa query mostra l'età: ”che ha sostituito i valori di età senza nulla. Questo perché non abbiamo definito il nome di un campo di "età" nel primo argomento di un operatore Ifnull.

Test> db.Dati.Aggregate ([$ Project: name: 1, age: $ ifnull: ["", ""]])
[
_id: objectId ("63bcb7a552359fabfc4a7701"), nome: 'peter', età: ",
_id: objectId ("63bcb7a552359fabfc4a7702), nome: 'ana', età:",
_id: objectId ("63bcb7c352359fabfc4a7703), nome: 'bryan', età:",
_id: objectId ("63bcb7c352359fabfc4a7704), nome: 'nina', età:",
_id: objectId ("63bcb7d052359fabfc4a7705"), nome: 'John', età: ",
_id: objectId ("63bcbf7552359fabfc4a770e"), nome: 'Michael', età: "
"

Quando si utilizza qualsiasi espressione di stringa nel primo argomento dell'operatore "ifnull", sostituirà tutti i valori di un campo di "età" con quella stringa. Nell'output mostrato di seguito, abbiamo usato la stringa "indefinita" e ha preso il posto dei valori originali nel campo dell'età di tutti i record.

Test> db.Dati.Aggregate ([$ Project: name: 1, age: $ ifnull: ["undefined", ""]])
[
_id: objectId ("63bcb7a552359fabfc4a7701"), nome: 'peter', età: 'undefined',
_id: objectId ("63bcb7a552359fabfc4a7702), nome: 'ana', età: 'undefined',
_id: objectId ("63bcb7c352359fabfc4a7703), nome:" bryan ", età:" undefined ",
_id: objectId ("63bcb7c352359fabfc4a7704), nome: 'nina', età: 'undefined',
_id: objectId ("63bcb7d052359fabfc4a7705"), nome: 'John', età: 'undefined',
_id: objectId ("63bcbf7552359fabfc4a770e"), nome: 'Michael', età: 'undefined'
"

Per evitare una cosa del genere, dovremo usare il campo "Age" come primo argomento all'operatore IFNULL insieme al segno "$". Quindi, lascia che il secondo argomento sia vuoto.e., Secondo argomento come suo valore. Durante l'esecuzione di questa istruzione aggregata, visualizzeremo l'output di seguito. Ora, puoi vedere che il campo di età ha mostrato i suoi valori originali in cui non esiste un valore "nullo". Inoltre, dove i valori sono nulli o indefiniti, il campo di età viene sostituito con vuoto ".

Test> db.Dati.Aggregate ([$ Project: Name: 1, Age: $ ifnull: ["$ Age", ""]])
[
_id: objectId ("63bcb7a552359fabfc4a7701"), nome: 'peter', età: 24,
_id: objectId ("63bcb7a552359fabfc4a7702), nome: 'ana', età:",
_id: objectId ("63bcb7c352359fabfc4a7703), nome: 'bryan', età:",
_id: objectId ("63bcb7c352359fabfc4a7704), nome: 'nina', età: 33,
_id: objectId ("63bcb7d052359fabfc4a7705"), nome: 'John', età: ",
_id: objectId ("63bcbf7552359fabfc4a770e"), nome: 'Michael', età: "
"

Diamo un'occhiata a diversi valori di output per i valori null del campo "età" usando l'operatore IfNull nell'istruzione aggregata. Questa volta, stiamo usando la stringa "Null Value" come secondo argomento all'operatore IFNULL per sostituire i valori null nel campo "età". Il risultato collegato di seguito ha visualizzato la sostituzione dei valori null con la stringa "valore null".

Test> db.Dati.Aggregate ([$ Project: Name: 1, Age: $ ifnull: ["$ Age", "Null Value"]])
[
_id: objectId ("63bcb7a552359fabfc4a7701"), nome: 'peter', età: 24,
_id: objectId ("63bcb7a552359fabfc4a7702), nome: 'ana', età: 'null value',
_id: objectId ("63bcb7c352359fabfc4a7703), nome: 'bryan', età:",
_id: objectId ("63bcb7c352359fabfc4a7704), nome: 'nina', età: 33,
_id: objectId ("63bcb7d052359fabfc4a7705"), nome: 'John', età: 'null value',
_id: objectId ("63bcbf7552359fabfc4a770e"), nome: 'Michael', età: 'null value'
"

Conclusione

Questo articolo contiene una discussione sull'uso dell'operatore Ifnull a partire dalla sua introduzione all'illustrazione finale. Le illustrazioni dimostrano come un valore "null" originale di un determinato campo può essere sostituito con un nuovo valore. Dopo aver discusso l'intera procedura di utilizzo dell'operatore IFNULL nella funzione aggregata MongoDB, siamo arrivati ​​al risultato che il primo argomento dell'operatore Ifnull dovrebbe essere un nome di campo con un personaggio "$" per evitare complicazioni.