MongoDB $ size

MongoDB $ size
Gli operatori sono molto utili quando è necessario eseguire qualcosa rapidamente senza eseguire domande complesse. MongoDB consente all'uso degli operatori di migliorare la sua funzionalità e effettuare una rapida elaborazione nel sistema di database. Uno di quegli operatori di MongoDB è l'operatore "dimensione" che è finora utilizzato per visualizzare l'unico record dal resto contenente un numero specifico di campi in uno dei suoi campi di array. In altre parole, l'operatore "dimensione" può essere applicato a un campo di array specifico per verificare se quel campo ha un numero specifico di elementi al suo interno e visualizzare l'intero record da cui appartiene l'array. Pertanto, questa guida dimostrerà l'uso dell'operatore "dimensione" in MongoDB usando alcune semplici domande.

Crea collezione

Cerchiamo prima i database già esistenti nel nostro MongoDB. Per questo, apriremo la shell Mongodb ed eseguiremo le sue istruzioni "Show DBS" nell'area di query come previsto. L'output per questa istruzione mostra 3 database integrati con dimensioni diverse mentre stiamo lavorando in un database "test" fittizio.

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

Utilizzando l'istruzione "Usa" insieme al nome del database "Test", è possibile passare a qualsiasi database come abbiamo fatto di seguito. L'output mostra che stiamo già utilizzando il database "test".

Test> Usa Test
Già durante il test DB

Visualiamo tutte le raccolte disponibili di un database "test" tramite la query "Show Collections". Il dettaglio di output non mostra nulla in quanto non abbiamo raccolta in questo momento.

Test> Mostra collezioni;

Stiamo creando una nuova raccolta denominata "test" nel database "test" che verrà utilizzata ulteriormente. Per questo, abbiamo provato la query "DB" con la funzione "createcollection" di MongoDB. Lo stato di output "OK: 1" mostra che la raccolta viene creata correttamente.

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

Esempio # 01:

È tempo di iniziare con il nostro primo esempio aggiungendo alcuni record alla raccolta "test" che abbiamo appena creato. Per fare ciò, useremo la funzione "inserisci" di MongoDB nella stessa query "DB" insieme al nome di una raccolta "Test". Il record che abbiamo aggiunto contiene 3 campi in totale. Due dei campi sono in forma di array i.E "PersonalDetails" e "AcademicRecord" contiene sottocampi. L'uso di parentesi ricci mostra il numero totale di record in una raccolta e il numero totale di campi all'interno di un campo specifico. I record sono stati aggiunti perfettamente.

Test> db.Test.insert (nome: "Tina", PersonalDetails: [Age: 44, Email: "[email protected] "],
... AcademicRecord: [qualifica: "BS", CGPA: 3.8])
DOGECATIONWARNING: raccolta.insert () è deprecato. Usa Insertone, InsertMany o BulkWrite.

riconosciuto: vero,
InsertedIds: '0': objectId ("63b389fda7ac5549359eba32")

Per ottenere tutti i record visualizzati sulla shell MongoDB, useremo la funzione find () all'interno della stessa istruzione dopo il nome di raccolta che segue anche la funzione foreach (). La funzione foreach () stampare i record in formato JSON come mostrato di seguito.

Test> db.Test.Trovare().foreach (printjson)

_id: objectId ("63b389fda7ac5549359eba32"),
Nome: 'Tina',
Dati personali: [

Età: 44,
Email: '[email protected]

",
Record accademico: [

Qualifica: "BS",
CGPA: 3.8

"

È tempo di utilizzare l'operatore "dimensione" per visualizzare solo il record con un numero specifico di campi in esso. Quindi, l'abbiamo utilizzato nella funzione Find () per ottenere il record in cui il campo PersonalDetails ha 2 record di campo separati, ciascuno di record tra le staffe . L'output non mostra nulla perché nessun record ha 2 campi all'interno del campo di PersonalDetails.

Test> db.Test.find (personaldetails: $ size: 2)

Impostando il valore dell'operatore "Size" su 1 ed eseguendo le istruzioni aggiornate, abbiamo l'intero record con i suoi campi nidificati visualizzati sulla schermata di shell MongoDB come di seguito. Il motivo dietro questo display è chiaro: PersonalDetails ha 1 record secondo le staffe .

Test> db.Test.find (personaldetails: $ size: 1)
[

_id: objectId ("63b389fda7ac5549359eba32"),
Nome: 'Tina',
PersonalDetails: [Age: 44, Email: '[email protected] '],
AcademicRecord: [qualifica: 'BS', CGPA: 3.8]

"

Esempio # 02:

Aggiungiamo un altro record dello stesso formato nella raccolta "Test" per vedere se l'operatore di dimensioni funziona su più record o no. La stessa query di inserto avrebbe dovuto aggiungere record per la persona "Beba". Sebbene abbiamo aggiunto più di un campo all'interno di PersonalDetails e AcademicRecord Array, aggiungendo questi campi all'interno di una coppia di parentesi ricci li considera un record.

Test> db.Test.Insert (Nome: "Beba", PersonalDetails: [Age: 44, Email: "[email protected] ", città:" California "], AcademicRecord: [qualifica:" MS ", CGPA: 3.9])

riconosciuto: vero,
InsertedIds: '0': objectId ("63b38c57a7ac5549359eba33")

Dopo aver aggiunto il secondo record, abbiamo provato la stessa query per visualizzare i record che abbiamo nella raccolta "Test". Entrambi i record sono stati visualizzati nel formato standard di array in MongoDB.

Test> db.Test.Trovare().bello()
[

_id: objectId ("63b389fda7ac5549359eba32"),
Nome: 'Tina',
PersonalDetails: [Age: 44, Email: '[email protected] '],
AcademicRecord: [qualifica: 'BS', CGPA: 3.8]
,

_id: objectId ("63b38c57a7ac5549359eba33"),
Nome: "beba",
PersonalDetails: [Age: 44, Email: '[email protected] ', città:' California '],
AcademicRecord: [Qualification: 'MS', CGPA: 3.9]

"

Eseguiamo la query della funzione "Trova" per visualizzare i record di una raccolta di test, utilizzando il valore dell'operatore "$ size" impostato su "3" che è stato applicato al campo di PersonalDetails. Poiché il campo di PersonalDetails non contiene più di 1 campo per ora, quindi l'output è nullo.

Test> db.Test.find (personaldetails: $ size: 3).bello()

Ora, aggiornando il valore dell'operatore "$ set" su 1 come dimostrato dalla query seguente. Il valore impostato "1" dimostra che l'unico record verrà mostrato nella schermata della console in cui il campo "Peronaldetails" ha un singolo record in esso. Come entrambi i record principali che abbiamo aggiunto, tenere singoli campi nel campo di PersonalDetails I.e. , vengono visualizzati entrambi i record.

Test> db.Test.find (personaldetails: $ size: 1).bello()
[

_id: objectId ("63b389fda7ac5549359eba32"),
Nome: 'Tina',
PersonalDetails: [Age: 44, Email: '[email protected] '],
AcademicRecord: [qualifica: 'BS', CGPA: 3.8]
,

_id: objectId ("63b38c57a7ac5549359eba33"),
Nome: "beba",
PersonalDetails: [Age: 44, Email: '[email protected] ', città:' California '],
AcademicRecord: [Qualification: 'MS', CGPA: 3.9]

"

Esempio # 03:

Inseriamo un nuovo record nella raccolta "Test" tramite la funzione "Insert". Questa volta, scegliamo di aggiungere 3 campi nel campo di PersonalDetails di questa raccolta, mentre il campo "AcademicRecord" contiene 2 record al suo interno. Applicheremo l'operatore "Size" su di esso.

Test> db.Test.Insert (Nome: "Paul", PersonalDetails: [Age: 43, Email: "[email protected] ", City:" Texas "], AcademicRecord: [qualifica:" Phd ", cgpa: 4])

riconosciuto: vero,
InsertedIds: '0': objectId ("63b38d59a7ac5549359eba34")

Ora che abbiamo aggiunto un record nidificato nella raccolta "Test", lo visualizzeremo sulla schermata della console usando l'istruzione funzione Trova (). Per visualizzare un record specifico, dobbiamo menzionare il nome di qualsiasi campo seguito dal suo valore all'interno di un record specifico i.e., Per visualizzare il record in cui il campo "Nome" ha il suo valore "Paul". È stato visualizzato solo l'ultimo record aggiunto.

Test> db.Test.find (name: "Paul")
[

_id: objectId ("63b38d59a7ac5549359eba34"),
Nome: "Paul",
PersonalDetails: [Age: 43, email: '[email protected] ', City:' Texas '],
AcademicRecord: [qualifica: 'phd', cgpa: 4]

"

Ci immergiamo nell'esempio della query per visualizzare i record da una raccolta "test" per visualizzare solo il record con la dimensione del campo di PersonalDetails pari a 3 i.e., avere 3 campi al suo interno. Per questo, prova la stessa funzione Trova () seguita dal nome del campo "PersonalDetails", operatore "$ size" e la funzione Pretty () per visualizzare l'output in un array. L'ultimo record che abbiamo appena aggiunto è stato visualizzato sulla console poiché il suo array di "personaldetails" contiene 3 record di campo.

Test> db.Test.find (personaldetails: $ size: 3).bello()
[

_id: objectId ("63b38d59a7ac5549359eba34"),
Nome: "Paul",
PersonalDetails: [Age: 43, email: '[email protected] ', City:' Texas '],
AcademicRecord: [qualifica: 'phd', cgpa: 4]

"

Conclusione

Dopo aver esaminato questa guida insieme a tre degli esempi di codice menzionati, sarai in grado di cercare il campo dell'array specifico da un record di dati specifico contenente solo il numero impostato di elementi tramite l'operatore di dimensioni di MongoDB. Abbiamo discusso di come un array a più campi può essere utilizzato nel record per far funzionare l'operatore di dimensioni utilizzando le istruzioni della funzione find (). In queste illustrazioni, il campo di dimensioni funziona per ottenere tutti quei record visualizzati che hanno un campo specifico con un numero specifico di record.