MongoDB $ round

MongoDB $ round
Mentre lavoravamo con valori numerici, ci siamo imbattuti in molti valori decimali contenenti 1 o più punti galleggianti alla fine. In matematica, possiamo convertire i valori float per renderli un valore intero arrotondando i punti galleggianti dopo il "punto". Ci sono alcune regole per completare i valori dei punti decimali i.e., Può essere arrotondato al suo prossimo valore consecutivo solo se il valore del punto float dopo il punto è "5". Mentre lavori con MongoDB, potresti imbatterti in valori decimali e vuoi convertirli in numeri interi. Per fare ciò, MongoDB ci fornisce l'operatore "rotondo" da utilizzare all'interno della funzione aggregata. In questa guida, vedremo come possiamo usarlo.

Crea raccolta del database

Abbiamo avviato la shell MongoDB e visualizzato tutti i database disponibili tramite la query "Show DBS" di MongoDB. L'output di questa istruzione mostra 3 database integrati mentre il database fittizio "test" è già in fase di utilizzazione.

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

Se si desidera utilizzare un database specifico, eseguire le istruzioni "usa" insieme al nome del database e in un momento utilizzerai il database particolare.

Test> Usa Test
Già durante il test DB

Ora che abbiamo finito di muoverci nello spazio di lavoro del database "test", ci è permesso creare raccolte in esso. Pertanto, creeremo una raccolta denominata "ordine" all'interno di questo database "test" mediante l'uso della funzione "createcollection" nell'istruzione. La query per la creazione di una raccolta insieme alla sua produzione è stata dimostrata di seguito.

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

Per ottenere tutte le raccolte del database "Test" elencate sulla shell MongoDB, usa la query visualizzata e otterrai anche la raccolta "Ordine" elencata lì.

Test> Mostra collezioni
Ordine

Inserire i documenti alla raccolta

Dopo che è stata generata la raccolta "ordine", non possiamo lasciarlo vuoto poiché dobbiamo lavorare su punti decimali per utilizzare l'operatore rotondo di MongoDB. Pertanto, dobbiamo inserire almeno un campo che contiene valori di punto decimale in esso. Quindi, abbiamo provato la funzione insertmany nelle istruzioni precedute dal nome di una raccolta "ordine" di inserire un totale di 3 documenti. Ogni documento contiene 3 campi i.e., Il campo "Titolo" del tipo di stringa, il campo "Prezzo" del tipo di intero e il campo "tasse" del tipo di galleggiante. Il campo fiscale contiene valori con 1 o più punti galleggianti.

Test> db.Ordine.InsertMany ([Titolo: "Pizza", Prezzo: 4500, Tax: 99.5,
... Titolo: "Burger", Prezzo: 4200, Tassa: 49.56, Titolo: "Platter", Prezzo: 3900, Tax: 55.25])

riconosciuto: vero,
inseritedids:
'0': objectId ("63b5a193639e00f0b5c51fae"),
'1': objectId ("63b5a193639e00f0b5c51faf"),
'2': objectId ("63b5a193639e00f0b5c51fb0")

Dopo aver inserito questi 3 documenti nella raccolta di "ordine" del database, li mostreremo sulla console MongoDB e lo daremo uno sguardo chiaro. Per questo, lanceremo la funzione "Trova" di MongoDB preceduta dal nome di una raccolta "Ordine" nell'istruzione. Usa le staffe ricci “” all'interno dell'argomento per visualizzare tutti i documenti di questa raccolta senza specificarne uno. L'output per questa istruzione ha visualizzato un totale di 3 documenti sottostanti.

Test> db.Ordine.Trovare()
[

_id: objectId ("63b5a193639e00f0b5c51fae"),
Titolo: 'Pizza',
Prezzo: 4500,
Tassa: 99.5
,

_id: objectId ("63b5a193639e00f0b5c51faf"),
Titolo: "Burger",
Prezzo: 4200,
Tassa: 49.56
,

_id: objectID ("63B5A193639E00F0B5C51FB0"),
Titolo: "Platter",
Prezzo: 3900,
Tassa: 55.25

"

Esempio # 01:

Ora che abbiamo finito con i prerequisiti e configurare il database, utilizzeremo l'operatore rotondo nelle istruzioni di shell MongoDB per convertire i valori decimali in numeri interi. Dato che abbiamo solo un campo "fiscale" che contiene i valori decimali, applicheremo l'operatore rotondo solo su di esso. Per utilizzare l'operatore rotondo, dobbiamo utilizzare la funzione aggregata () di MongoDB nell'istruzione. Questa istruzione avvia i suoi argomenti con il "progetto" dell'operatore seguito dall'operatore rotondo.

Puoi anche nominare il campo per l'uscita da visualizzare per i valori dei punti decimali i.e., valori arrotondati. Quindi, l'operatore "round" deve contenere il nome di un campo da aggiornare insieme al numero totale di punti decimali che si desidera che venga arrotondata. Nel nostro caso, abbiamo completato tutti i valori del campo "fiscale" di 1 e abbiamo ottenuto i valori modificati nell'output. Questi valori contengono ora 1 valore di punto decimale: 99.5 per rimanere 99.5 poiché ha già solo 1 punto decimale, 49.Da 56 a 49.6 dopo aver arrotondato 6 e 55.25 a 55.2.

Test> db.Ordine.Aggregate ([$ Project: RoundValue: $ round: ["$ tax", 1]])
[
_id: objectId ("63b5a193639e00f0b5c51fae"), arrotondamento: 99.5,
_id: objectId ("63b5a193639e00f0b5c51faf"), arrotondamento: 49.6,
_id: objectId ("63b5a193639e00f0b5c51fb0"), arrotondamento: 55.2
"

Quando si esegue la funzione Find () per vedere il campo "tassa" di tutti i documenti, vedrai che i record non sono aggiornati nella raccolta perché l'operatore round funziona solo in fase di esecuzione.

Test> db.Ordine.Trovare()
[

_id: objectId ("63b5a193639e00f0b5c51fae"),
Titolo: 'Pizza',
Prezzo: 4500,
Tassa: 99.5
,

_id: objectId ("63b5a193639e00f0b5c51faf"),
Titolo: "Burger",
Prezzo: 4200,
Tassa: 49.56
,

_id: objectID ("63B5A193639E00F0B5C51FB0"),
Titolo: "Platter",
Prezzo: 3900,
Tassa: 55.25

"

Se si desidera ottenere un numero intero anziché un valore di punto decimale, è possibile utilizzare il numero totale di punti decimali "0" nella query. Pertanto, abbiamo aggiornato la stessa istruzione per il campo "fiscale" e sostituito 1 con 0. Dopo aver eseguito la query della funzione aggregata, abbiamo i valori di numeri interi per il campo "tassa" di tutti e 3 i documenti dalla raccolta di "ordine" i.e., 99.5 a 100, 49.56 a 50 e 55.25 a 55.

Test> db.Ordine.Aggregate ([$ Project: RoundValue: $ round: ["$ tax", 0]])
[
_id: objectId ("63b5a193639e00f0b5c51fae"), arrotondamento: 100,
_id: objectId ("63b5a193639e00f0b5c51faf"), arrotondamento: 50,
_id: objectId ("63b5a193639e00f0b5c51fb0"), arrotondamento: 55
"

Ora, eseguendo le stesse istruzioni di funzione () nella shell Mongodb, abbiamo la stessa uscita che abbiamo nell'illustrazione sopra I.e. Nessun cambiamento perché il round funziona solo in fase di esecuzione.

Test> db.Ordine.Trovare()
[

_id: objectId ("63b5a193639e00f0b5c51fae"),
Titolo: 'Pizza',
Prezzo: 4500,
Tassa: 99.5
,

_id: objectId ("63b5a193639e00f0b5c51faf"),
Titolo: "Burger",
Prezzo: 4200,
Tassa: 49.56
,

_id: objectID ("63B5A193639E00F0B5C51FB0"),
Titolo: "Platter",
Prezzo: 3900,
Tassa: 55.25

"

Esempio # 02:

Usiamo un altro modo per utilizzare l'operatore rotondo nella shell Mongodb per completare i valori dei punti decimali i.e., Abbastanza uguale con un po 'di differenza nel posizionamento di operatori e argomenti. All'interno della funzione aggregata, inserirai gli argomenti nello stesso formato di array a partire dall'uso dell'operatore del progetto. Useremo il nome di un campo per essere aggiornato e impostare il suo stato come "1" per visualizzare il suo valore effettivo residente nella raccolta in questo momento.

Quindi, aggiungeremo un nuovo campo chiamato "Valore" seguito dall'operatore rotondo e il nome di un campo "tassa" come argomento per farlo aggiornare. Convertirà tutti i valori del punto decimale in un numero intero dopo aver completato i punti decimali alla fine. L'output mostra i valori del campo "tasse" originali insieme ai valori arrotondati aggiornati nel campo "valore".

Test> db.Ordine.Aggregate ([$ Project: Tax: 1, Value: $ round: ["$ tax"]])
[
_id: objectId ("63b5a193639e00f0b5c51fae"), tassa: 99.5, valore: 100,
_id: objectId ("63b5a193639e00f0b5c51faf"), tassa: 49.56, valore: 50,
_id: objectId ("63b5a193639e00f0b5c51fb0"), tassa: 55.25, valore: 55
"

Conclusione

Dopo aver discusso del concetto di arrotondare i valori decimali nel campo della matematica, abbiamo discusso di come l'operatore "round" di MongoDB possa essere eliminato per arrotondare i valori di diversi punti. Per cancellare l'uso dell'operatore rotondo in MongoDB, abbiamo dimostrato due esempi contenenti la funzione aggregata che utilizza l'operatore rotondo. Usando questi esempi, abbiamo arrotondato i valori di 1 e 2 punti in fase di esecuzione mentre abbiamo anche visto che l'uso dell'operatore rotondo non modifica il valore effettivo nella raccolta.