Proiecție în MongoDB [cu exemple]

Publicat: 2020-09-15

MongoDB este una dintre cele mai faimoase baze de date moderne pentru gestionarea și gestionarea datelor mari. Este o bază de date NoSQL orientată spre documente care utilizează documente asemănătoare JSON pentru a facilita gestionarea datelor.

Diverse idei de proiecte MongoDB pot fi ușor aduse la viață. Cu toate acestea, MongoDB are și câteva dezavantaje. În mod implicit, orice interogare pentru un anumit document va afișa toate datele - această problemă este rezolvată cu ajutorul proiecției MongoDB .

Cuprins

Ce este proiecția în MongoDB?

Proiecția în MongoDB limitează ieșirea datelor la câmpurile specificate în loc să le arate pe toate. Acest lucru se face cu ajutorul metodei find(). Metoda find() acceptă un parametru opțional care ne permite fie să includem, fie să excludem anumite câmpuri de ieșire. Să aprofundăm cum să folosim proiecția în MongoDB .

Sintaxa metodei Find().

Proiecția în MongoDB se face cu ajutorul metodei find(), a cărei sintaxă este:

db. nume_colecție .find ({}, { field_Key:1 sau 0 })

În sintaxa de mai sus, collection_name este documentul din care trebuie să extragem date. Apoi există doi parametri în metoda find() - primul acceptă o interogare, iar al doilea este folosit pentru proiecție. Field_Key din sintaxă este numele câmpului pe care dorim să îl includem sau să-l excludem.

Trebuie să transmitem o valoare booleană pentru fiecare câmp_ Key . Această valoare definește dacă dorim să includem câmpul sau să-l excludem. Dacă introducem 1 într-un câmp, acesta va fi afișat în rezultate, iar dacă includem 0, acesta va fi ascuns.

Exemplu de bază de date

Să creăm un exemplu de document într-o bază de date, astfel încât să ne putem referi la el pe parcursul acestui articol.

db.example.studentData([

{_id: ObjectId(„59kf63795bc1d”), student_name: „Alexander”, student_id: 01, student_status: „A”, student_age: 22}

{_id: ObjectId(„59ke62794bc1d”), student_name: „Steve”, student_id: 02, student_status: „A”, student_age: 23}

{_id: ObjectId(„59kg73795bf1e”), student_name: „Luke”, student_id: 03, student_status: „A”, student_age: 21}

{_id: ObjectId(„59kb69995ah1d”), student_name: „Bravo”, student_id: 04, student_status: „B”, student_age: 25}

])

Acesta este documentul nostru de bază de date numit exemplu pe care îl vom folosi ca referință în toate exemplele noastre.

Preluarea datelor cu și fără proiecție în MongoDB

1. Sintaxa pentru extragere fără proiecție

Recuperarea tuturor câmpurilor (ca nefolosind proiecția) studenților cu status_student: „A”.

db.example.find({student_status: „A”})

Aceasta corespunde interogării Select * din exemplu WHERE student_status = „A” în SQL. Preluarea datelor fără proiecție în MongoDB va produce următorul rezultat:

{“_id”: ObjectId(„59kf63795bc1d”), „student_name”: „Alexander”, „student_id”: 01, „student_status”: „A”, student_age: 22}

{“_id”: ObjectId(„59ke62794bc1d”), „student_name”: „Steve”, „student_id”: 02, „student_status”: „A”, „student_age”: 23}

{“_id”: ObjectId(„59kg73795bf1e”), „student_name”: „Luke”, „student_id”: 03, „student_status”: „A”, student_age: 21}

În mod implicit, afișează toate câmpurile datelor în care student_status = „A”. Pentru a limita câmpurile de ieșire, putem folosi proiecția în MongoDB .

2. Sintaxa de recuperare cu proiecție

Se preiau student_name și student_status pentru toți studenții.

db.example.find({}, {student_name: 1, student_status: 1})

Aceasta va afișa următorul rezultat:

{“_id”: ObjectId(„59kf63795bc1d”), „student_name”: „Alexander”, „student_status”: „A”}

{“_id”: ObjectId(„59ke62794bc1d”), „student_name”: „Steve”, „student_status”: „A”}

{“_id”: ObjectId(„59kg73795bf1e”), „student_name”: „Luke”, „student_status”: „A”}

{“_id”: ObjectId(„59kb69995ah1d”), student_name: „Bravo”, student_status: „B”}

_id-ul este afișat implicit în timpul utilizării proiecției în MongoDB , cu excepția cazului în care îl suprimăm.

Suprimarea _id în timp ce utilizați proiecția în MongoDB

Se elimină _id-ul implicit și se afișează student_id, student_name și student_status pentru toți studenții.

db.example.find({}, {_id: 0, student_id: 1, student_name: 1, student_status: 1})

Aceasta va produce următorul rezultat:

{“student_id”: 01, „student_name”: „Alexander”, „student_status”: „A”}

{“student_id”: 02, „student_name”: „Steve”, „student_status”: „A”}

{“student_id”: 03, „student_name”: „Luke”, „student_status”: „A”}

{“student_id”: 04, „student_name”: „Bravo”, student_status: „B”}

3. Combinarea incluziunii și excluderii

Excluzând _id și student_id, inclusiv student_name și student_status al tuturor studenților.

db.example.find({}, {_id: 0, student_id: 0, student_name: 1, student_status: 1})

Aceasta va produce următorul rezultat:

Eroare: eroare: {

„waitedMS”: NumberLong(0),

„ok”: 0,

„errmsg”: „Proiecția nu poate avea un amestec de includere și excludere.”

„cod”: 2

}

Combinarea includerii și excluderii în timpul utilizării proiecției MongoDB va genera o eroare, deoarece nu le putem efectua pe ambele în aceeași interogare. Câmpul _id este o excepție de la această regulă.

Ați fi observat că am folosit o combinație de includere și excludere în exemplul nostru anterior în care am suprimat _id și am afișat alte câmpuri și a funcționat bine. Din cauza excepției de la regulă, am exclus _id și am inclus restul câmpurilor.

4. Specificarea proiecției în MongoDB prin excludere

Excluzând _id și student_status tuturor studenților și afișând celelalte câmpuri.

db.example.find({}, {_id: 0, student_status: 0})

{„student_name”: „Alexander”, „student_id”: 01, „student_age”: 22}

{„student_name”: „Steve”, „student_id”: 02, „student_age”: 23}

{„student_name”: „Luke”, „student_id”: 03, „student_age”: 21}

{„student_name”: „Bravo”, „student_id”: 04, „student_age”: 25}

De asemenea, puteți utiliza cei patru operatori de proiecție pentru a limita câmpurile de ieșire, dar aceștia nu sunt acceptați de metoda find(). Operatorii de proiecție care pot fi utilizați sunt: ​​$, $elemMatch, $slice și $meta.

Citiți și: MongoDB Real World Use Cases

Concluzie

Cu utilizarea proiecției în MongoDB , putem prelua controlul afișării datelor în front-end, ceea ce crește cazurile de utilizare în lumea reală . MongoDB a atins câteva etape în ultimii ani. Acest lucru a făcut ca viitorul domeniu de aplicare al MongoDB să fie luminos, iar numeroase companii caută dezvoltatori full-stack cu cunoștințe despre MongoDB.

Prin urmare, acum este un moment excelent pentru a include abilitățile MongoDB în CV-ul tău. Dar atunci, doar gestionarea unei baze de date nu este suficientă în lumea competitivă de astăzi. Prin urmare, ar fi de ajutor dacă doriți să deveniți un dezvoltator full-stack sau să învățați analize de afaceri pentru a înțelege și analiza datele pe care le gestionați și pentru a ajuta companiile să aibă rezultate bune. upGrad vă poate ajuta să începeți.

Noi, cei de la upGrad, oferim surse detaliate de învățare, împreună cu experiență practică și asistență la locul de muncă. Am colaborat cu mai multe institute pentru a vă oferi cele mai bune din educație și certificare. Puteți alege dacă doriți să vă înscrieți pentru cursul de certificare Business Analytics sau să mergeți pentru un curs de diplomă PG de dezvoltare software Full-stack . Indiferent de ceea ce vrei să urmezi ca carieră în viața ta, noi te oferim.

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Conduceți revoluția tehnologică bazată pe date

Program de certificat avansat în Big Data de la IIIT Bangalore