voer INNER JOIN uit in MongoDB met behulp van $lookup aggregation operator

in MongoDB 3.2 heeft $lookup operator in aggregation framework geïntroduceerd die kan worden gebruikt om LEFT JOIN uit te voeren.
Houd er rekening mee dat MongoDB data operatie is niet zoals
operationele gegevens in relationele database, dus het is altijd raadzaam om relevante gegevens in hetzelfde document
die vaak samen gebruiken. Maar in een bepaald geval is het nodig om twee verschillende collecties te plaatsen vanwege verschillende
zoals, om duplicatie van gegevens te voorkomen waarvoor we zware updatebewerkingen hebben, gebruik in meerdere collecties enz.

JOIN is een van de belangrijkste verschillen tussen SQL en NoSQL database waar als MongoDB Aggregation $lookup
operator nuttig en krachtig is om JOIN te krijgen voor twee collecties zoals het doen in RDBMS.

MongoDB Aggregation

laten we verder kijken:

syntaxis:

meer informatie over MEAN Stack
ontwikkeling

als u uit RDBMS-wereld komt, kunt u dit verwachten als aparte documentlink alle velden van de lokale
en buitenlandse collectie, maar nee, alle buitenlandse documenten zullen worden toegevoegd als een array van lokale collectiedocument. Omdat alle
buitenlandse documenten in het document zijn toegevoegd, wilt u misschien alleen gebruiken als een aantal van een buitenlandse relatieve documenten
beperkt zijn en de grootte van het resultaatdocument niet groter is dan de limiet van de documentgrootte.

Ex:

laten we zeggen hebben twee collecties ‘orders’ en ‘product’ met de volgende gegevens.

bestellingen:

producten:

nu om orde met productdetail terug te halen kunnen wij hieronder gebruiken

Resultaatdocumenten:

Normaal, orde kan bevat meerdere items, laten we eens kijken hoe je kunt uitvoeren $lookup binnen array element.

laten we bestellingen wijzigen om er hieronder uit te zien

in dit geval zijn orderitems in array die
vereist is om af te wikkelen met behulp van $unwind operator die een apart
document per item zal aanmaken en dan kunt u lookup uitvoeren. Script kan er hieronder uitzien.

resultaat:

misschien wilt u $lookup operator niet gebruiken om alle bestellingen voor een bepaald product in andere woorden te krijgen join orders op
product. In het geval van het best verkopende product kunnen we duizenden bestellingen hebben en alles toegevoegd binnen een enkele array kan
documentgroottelimiet array veroorzaken.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

More: