MongoDB $ Range

MongoDB $ Range
L'operatore MongoDB $ Range è un operatore personalizzato che genera un array di numeri in base a un determinato valore iniziale, valore finale e valore del passaggio. Questo operatore è uno strumento utile per generare sequenze di numeri da utilizzare nella manipolazione o nell'analisi dei dati. Viene in genere utilizzato come componente dell'operatore del progetto $ in una pipeline aggregata, per creare un nuovo campo nei documenti di output che contengono un array di numeri. Ci vogliono un totale di tre argomenti: il valore iniziale, il nome del campo su cui verrà applicato il campo di intervallo e il numero di incremento per il valore di incremento fino a raggiungere l'ultimo punto di un valore del campo. Questa guida spiegherà e dimostrerà l'uso dell'operatore "intervallo" di MongoDB con l'aiuto di alcuni esempi.

Esempio # 01:

Assicurati che il tuo database MongoDB sia già impostato sulla macchina. In caso contrario, prova a installarlo insieme alla creazione di una collezione in esso. La raccolta deve avere record. Abbiamo impostato il nostro database MongoDB creando una raccolta denominata "Dummy" e abbiamo aggiunto alcuni documenti ad esso. È tempo di utilizzare l'operatore di gamma su una collezione fittizia. Prima di allora, mostreremo i documenti che abbiamo nella nostra collezione fittizia. L'istruzione mostrata di seguito viene eseguita nella shell Mongodb a questo scopo. Il comando sta usando il metodo "Find ()" per cercare tutti i documenti in una raccolta chiamata "Dummy" con le parentesi graffe vuote "". Vengono utilizzati criteri di ricerca specifici, quindi verranno visualizzati tutti i record nella collezione "fittizio".

L'output del comando è un array di documenti, ogni record contenente diversi campi. I campi includono un oggetto unico "_id" di ciascun record, il campo della città rappresenta il nome di una città, il campo del conteggio rappresenta un numero numerico, il campo DESC rappresenta una stringa che descrive la città e il campo casuale rappresenta un valore numerico casuale.

Test> db.Manichino.Trovare()
[_id: objectId ("63c8a1f94ff07039aa6cdf6b"), città: "texas", conteggio: 3, disc: "città di medie dimensioni", casuale: 81,
_id: objectId ("63c8a1f94ff07039aa6cdf6c"), città: "Los Angeles", conteggio: 3, disc: "città di medie dimensioni", casuale: 5,
_id: objectId ("63c8a1f94ff07039aa6cdf6d"), città: "Italia", conteggio: 10, disc: "più bello e affollato", casuale: 12,
_id: objectId ("63c8a1f94ff07039aa6cdf6e"), città: 'istanbul', conteggio: 3, disc: 'città di medie dimensioni', casuale: 95,
_id: objectId ("63c8a1f94ff07039aa6cdf6f"), città: "Delhi", conteggio: 3, disc: "città di medie dimensioni", casuale: 22]

È tempo di applicare il campo "Range" su tutti i record di una raccolta MongoDB "Dummy" per ottenere la gamma di numeri. Il comando per l'applicazione dell'operatore di gamma è stato allegato sotto. Sta usando il metodo "aggregate ()" per eseguire un'operazione aggregata su una raccolta chiamata "Dummy". L'operatore "$ Project" viene utilizzato per rimodellare i documenti in una raccolta includendo o esclusi i campi e può anche creare nuovi campi. In questo caso, l'operatore "$ Project" viene utilizzato per creare un nuovo campo chiamato "Rest" che è un array contenente un intervallo di numeri da 0 al valore del campo "casuale" in ciascun documento, aumentando di 10. L'output del comando mostra un array di record, il campo di riposo rappresenta un nuovo array contenente un intervallo di numeri in base al valore del campo "casuale" e sul campo "città" con il nome di una città specifica. Il punto di riposo può essere indovinato dall'intervallo fornito nel campo dell'array "Rest".

Test> db.Manichino.Aggregate ([$ Project: City: 1, "Rest": $ Range: [0, "$ Random", 10]])
[_id: objectId ("63c8a1f94ff07039aa6cdf6b"), città: "texas", riposo: [0, 10, 20, 30, 40, 50, 60, 70, 80],
_id: objectId ("63c8a1f94ff07039aa6cdf6c"), città: 'los angeles', riposo: [0],
_id: objectId ("63c8a1f94ff07039aa6cdf6d"), città: 'Italia', riposo: [0, 10],
_id: objectId ("63c8a1f94ff07039aa6cdf6e"), città: 'istanbul', riposo: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
_id: objectId ("63c8a1f94ff07039aa6cdf6f"), città: 'Delhi', riposo: [0, 10, 20]]

Esempio # 02:

Diamo un'occhiata a un altro esempio per utilizzare il campo di gamma sulla collezione MongoDB. Finora la raccolta "test" è stata utilizzata in questo esempio. L'istruzione "Trova" allegata di seguito ha visualizzato il contenuto di questa raccolta. L'output del comando contiene l'identificatore univoco assegnato a ciascun documento da MongoDB, il campo "S" rappresenta il numero del punto di partenza e il campo "E" rappresenta il numero del punto finale.

Test> db.Test.Trovare()
[_id: objectid ("63cb65f0bef5adfc81df628e"), s: 2, e: 8,
_id: objectid ("63cb65f0bef5adfc81df628f"), s: 1, e: 5,
_id: objectId ("63cb65f0bef5adfc81df6290"), s: 4, e: 9]

L'output mostra che l'array viene creato utilizzando l'operatore $ gamma, che richiede due argomenti: il valore iniziale e il valore finale. Il valore iniziale è il campo "S" e il valore finale è il campo "E" nel documento. L'output finale di questo comando è un elenco di documenti, ciascuno con un campo _id, un campo "s", un campo "e" e un campo "r" che contiene una serie di numeri interi. I numeri interi nel campo "R" sono l'intervallo di numeri tra i campi "S" e "E" per ciascun documento: ciascuno con un incremento di 1. Questo perché non abbiamo assegnato un valore di incremento per l'operatore dell'intervallo. Quindi, l'operatore "intervallo" ha preso "1" come valore di incremento da solo.

Test> db.Test.Aggregate ([$ Project: s: 1, e: 1, "r": $ intervallo: ["$ s", "$ e"]])
[_id: objectId ("63cb65f0bef5adfc81df628e"), s: 2, e: 8, r: [2, 3, 4, 5, 6, 7],
_id: objectid ("63cb65f0bef5adfc81df628f"), s: 1, e: 5, r: [1, 2, 3, 4],
_id: objectId ("63cb65f0bef5adfc81df6290"), s: 4, e: 9, r: [4, 5, 6, 7, 8]]

Esempio # 03:

In tutte le illustrazioni sopra, abbiamo applicato solo l'operatore di intervallo sui campi delle raccolte con valori di tipo intero. Riceveremo un errore quando applichiamo l'operatore di intervallo sul valore del tipo di stringa. E se lo applichiamo ai valori del campo di tipo decimale? Controlliamo che applicandolo a una nuova collezione denominata "Float" nel nostro database MongoDB. La funzione Find () applicata alla collezione "Float" mostra i 5 set di documenti in essa. Ogni documento contiene il suo identificatore univoco, il tipo di tipo di stringa "Titolo" e il "campo di tipo galleggiante" età "contenente valori di punti decimale.

Test> db.Galleggiante.Trovare()
[_id: objectid ("63cb5f26bef5adfc81df6289"), titolo: 'nina', età: 45.6,
_id: objectid ("63cb5f26bef5adfc81df628a"), titolo: 'ana', età: 22.75,
_id: objectid ("63cb5f26bef5adfc81df628b"), titolo: 'eden', età: 35.9,
_id: objectId ("63cb5f26bef5adfc81df628c"), titolo: 'rock', età: 82.5,
_id: objectId ("63cb5f26bef5adfc81df628d"), titolo: 'lia', età: 27]

Ora, abbiamo applicato l'operatore "intervallo" sulla raccolta float utilizzando la funzione aggregata per ottenere l'intervallo di numeri con un incremento di 11 per il campo "età". Questo codice, tuttavia, genera un errore perché l'operatore di $ intervallo richiede che il valore finale sia un numero intero a 32 bit, ma il valore del campo "età" è un numero di punto mobile e non può essere convertito in 32- un po 'intero. Ciò dimostra che non possiamo applicare l'operatore di gamma su qualsiasi altro tipo di dati tranne il tipo di dati interi nel database MongoDB.

Test> db.Galleggiante.Aggregate ([$ Project: Titolo: 1, "Rest": $ Range: [0, "$ Age", 11]])

Mongoservererror: Errore di PlanExecutor durante l'aggregazione :: CAUSA DA :: $ L'intervallo richiede un valore finale che può essere rappresentato come un numero intero a 32 bit, valore trovato: 45.6.

Conclusione

Abbiamo informato il concetto di operatore di gamma utilizzato nella funzione aggregata mongodb. Dopo aver definito l'uso dell'operatore di gamma, ne abbiamo spiegato l'uso con l'aiuto di tre esempi distinti di comandi mongodb nella shell. La prima illustrazione dimostra l'uso dell'operatore di intervallo sul campo di tipo intero per ottenere la sequenza di numeri con il numero di incremento specifico. Le seconde illustrazioni dimostrano come un operatore di intervallo può essere applicato al campo Start and End senza utilizzare il numero di incremento. Mentre l'ultimo esempio mostra che l'operatore della gamma non funziona su tipi di dati diversi dai numeri interi: galleggianti e stringhe.