MongoDB $ strcasecmp

MongoDB $ strcasecmp
Mentre facciamo un confronto in lingue diverse, tendiamo a utilizzare operatori di confronto. Il confronto potrebbe essere sensibile al caso o insensibile in base alla scelta di un utente. Proprio come altri ambienti di sviluppo, MongoDB ha i suoi operatori di confronto e uno di questi operatori è l'operatore "strcasecmp". L'operatore MongoDB strcasecmp confronta due valori di stringa in modo insensibile al caso i.e., Ignora il caso della stringa e cerca. L'operatore STRCASECMP restituisce 0 se entrambe le stringhe sono uguali, 1 se il primo valore è maggiore del secondo e -1 se il primo valore è inferiore al secondo valore. L'operatore può essere utilizzato all'interno di una query MongoDB per filtrare i documenti in base ai valori della stringa.

Crea collezione

Inizia con la creazione di una nuova raccolta di database nella banca del database. Il comando allegato di seguito sta creando una nuova raccolta chiamata "Data" nel nostro database MongoDB "Test". La risposta di OK: 1 indica che la raccolta è stata creata correttamente e può essere utilizzata ulteriormente.

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

Inserire i record alla raccolta

All'inizio della creazione di una raccolta, deve essere vuoto in quanto non abbiamo ancora aggiunto documenti. Per eseguire l'operatore STRCASECMP su una raccolta di "dati", dovrebbe avere documenti. Pertanto, utilizzeremo la funzione MongoDB InsertMany per aggiungere numerosi record in una raccolta denominata "dati" contemporaneamente. I documenti inseriti sono nel formato delle coppie di valore chiave, con le chiavi "Titolo" e "Desc" e i loro rispettivi valori. I valori inseriti includono "John", "John", "IDK" e "Lisa" per la chiave "Titolo" e "A Random Guy", "Good Boy", "Idontknow" e "Enginnerer" per il " Desc ”chiave. Il comando è di aggiungere 4 nuovi documenti. L'output mostra il "riconosciuto" come un valore booleano, che è impostato su True, indicando che la query è stata riconosciuta ed eseguita dal server MongoDB correttamente.

Test> db.Dati.InsertMany ([Titolo: "John", Desc: "A Random Guy", Titolo: "John", Desc: "Good Boy", Titolo: "Idk", Desc: "Idontknow", Titolo : "Lisa", disc: "Enginnerer"])

riconosciuto: vero,
inseritedids:
'0': ObjectId ("63C90D6A42844A817C33167C"),
'1': ObjectId ("63C90D6A42844A817C33167D"),
'2': ObjectId ("63C90D6A42844A817C33167E"),
'3': ObjectId ("63C90D6A42844A817C33167f")

Visualizza i record di raccolta

Dopo aver inserito un totale di 4 record nella raccolta "dati" del database "test", dovremmo verificare i documenti almeno una volta. Pertanto, dobbiamo visualizzare i record inseriti nella shell Mongodb per la visualizzazione. Il comando per la visualizzazione dei record è stato allegato di seguito. Usando il metodo MongoDB Find (), abbiamo recuperato tutti i documenti della raccolta "dati". L'oggetto vuoto è passato come argomento al metodo find () significa che non viene applicata alcuna condizione di filtraggio e tutti i documenti nella raccolta verranno restituiti. L'output di questo comando è un array di documenti, ognuno contenente i campi _id, titolo e disc e i rispettivi valori, che sono stati aggiunti in precedenza nella raccolta. L'output conferma che i documenti sono presenti nella raccolta e possono essere recuperati per ulteriori elaborazioni.

Test> db.Dati.Trovare()
[_id: objectId ("63c90d6a42844a817c33167c"), titolo: 'John', disc: 'A Random Guy',
_id: objectId ("63c90d6a42844a817c33167d"), titolo: 'John', disc: 'Good Boy',
_id: objectid ("63c90d6a42844a817c33167e"), titolo: 'idk', disc: 'idontknow',
_id: objectId ("63c90d6a42844a817c33167f"), titolo: 'lisa', disc: 'Enginnerer']

Esempio # 01:

Nella nostra prima illustrazione di MongoDB, utilizzeremo l'operatore STRCASECMP per eseguire un confronto tra due valori di stringa: confronto insensibile al caso. Per questo, eseguiremo la query mostrata di seguito nella shell di MongoDB che utilizza la funzione aggregata di MongoDB per eseguire una serie di operazioni su una raccolta denominata "dati". La prima operazione è una fase di $ Project, che modifica i documenti nella raccolta aggiungendo o rimuovendo i campi. In questo caso, la fase di $ Project mostrerà tutti i record del campo "Titolo" insieme all'aggiunta di un nuovo campo chiamato "risultato" a ciascun documento, che è il risultato del confronto del valore del campo "Titolo" La stringa "IDK" utilizzando l'operatore $ strcasecmp.

Il confronto è insensibile al caso, il che significa che "John" e "John" sarebbero considerati uguali. Il nuovo campo "Risultato" visualizza l'output del confronto del campo "Titolo" con "IDK". 0 al terzo record mostra che la stringa "ID" è uguale alla stringa "IDK" nel campo "Titolo" mentre il resto è 1.

Test> db.Dati.Aggregate ([$ Project: Titolo: 1, risultato: $ strcasecmp: ["$ title", "idk"]])
[_id: objectId ("63c90d6a42844a817c33167c"), titolo: 'John', risultato: 1,
_id: objectId ("63c90d6a42844a817c33167d"), titolo: 'John', risultato: 1,
_id: objectId ("63c90d6a42844a817c33167e"), titolo: 'idk', risultato: 0,
_id: objectId ("63c90d6a42844a817c33167f"), titolo: 'lisa', risultato: 1]

Esempio # 02:

Facciamo una nuova illustrazione del confronto delle stringhe in modo insensibile al caso all'interno del database MongoDB. Questa volta, il codice che abbiamo utilizzato sta utilizzando la stessa funzione aggregata per eseguire un confronto sul campo "titolo". La fase del progetto $ sta creando un nuovo campo con lo stesso nome: "risultato" che memorizza l'output del confronto. Per fare un confronto, stiamo usando lo stesso operatore $ strcasecmp. L'operatore $ strcasecmp viene approvato con due argomenti: "$ title", che è il valore del campo "titolo" in ciascun documento, e "John", che è la stringa utilizzata come valore di confronto. In questo esempio, il primo documento ha un campo "titolo" di "John", che è uguale a "John", quindi il risultato è 0.

Il secondo documento ha un campo "titolo" di "John", che è anche uguale a "John" ma in maiuscolo. Quindi, il "risultato" è anche 0. Il terzo documento ha un campo "titolo" di "IDK", che è inferiore a "John" in termini di ordine lessicografico, quindi il risultato è -1. Il quarto documento ha un campo "titolo" di "Lisa", che è maggiore di "John" in termini di ordine lessicografico, quindi il risultato è 1.

Test> db.Dati.Aggregate ([$ Project: Titolo: 1, risultato: $ strcasecmp: ["$ title", "John"]])
[_id: objectId ("63c90d6a42844a817c33167c"), titolo: 'John', risultato: 0,
_id: objectId ("63c90d6a42844a817c33167d"), titolo: 'John', risultato: 0,
_id: objectId ("63c90d6a42844a817c33167e"), titolo: 'idk', risultato: -1,
_id: objectId ("63c90d6a42844a817c33167f"), titolo: 'lisa', risultato: 1]

Esempio # 03:

Nel nostro ultimo illustrazione, useremo il campo "Desc" della raccolta "Data" da confrontare con una nuova stringa. L'operatore $ strcasecmp viene approvato due argomenti: "$ desc", che è il valore del campo "DESS" in ciascun documento e "Idontknow", che è la stringa utilizzata come valore di confronto.

I primi, secondi e quarti documenti hanno un campo "disc" di "un ragazzo a caso", che è inferiore o maggiore della stringa "idontknow" in termini di ordine lessicografico. Quindi, il risultato per questi record è -1. Il terzo documento ha un campo "disc" di "Idontknow", che è uguale a "Idontkno" indipendentemente dal caso delle lettere, quindi il risultato è 0.

Test> db.Dati.Aggregate ([$ Project: Desc: 1, risultato: $ strcasecmp: ["$ desc", "idontknow"]])
[_id: objectId ("63c90d6a42844a817c33167c"), disc: "un ragazzo a caso", risultato: -1,
_id: objectId ("63c90d6a42844a817c33167d"), disc: "buon ragazzo", risultato: -1,
_id: objectId ("63c90d6a42844a817c33167e"), disc: "idontknow", risultato: 0,
_id: objectId ("63c90d6a42844a817c33167f"), disc: 'Enginnerer', risultato: -1]

Conclusione

Questa guida introduce il concetto e l'uso dell'operatore strcasecmp di MongoDB. Abbiamo creato una nuova raccolta ed eseguito comandi di funzione aggregata () insieme all'operatore STRCASECMP per dimostrare l'uso dell'operatore STRCASECMP. Gli esempi utilizzati in questo articolo dimostrano come una singola stringa può essere confrontata con i valori della stringa dei campi di raccolta.