MongoDB Relationships

Relasjoner i MongoDB representerer hvordan ulike dokumenter er logisk sammenheng med hverandre. Relasjoner kan modelleres via Embedded Hotell og Refererte
tilnærminger. Slike forhold kan være enten 1: 1, 1: N, N: 1 eller N: N.

La oss vurdere det gjelder lagring av adresser for brukerne. Så kan en bruker ha flere adresser gjør dette til en 1: N forholdet

Etter prøven dokumentstrukturen av user
dokument − product: {"_id". ObjectID (" 52ffc33cd85242f436000001 ")," name ":" Tom Hanks "," kontakt ":" 987654321 "," dob ":" 01-01-1991 "}

Etter prøven dokumentstrukturen av adresse Anmeldelser Dokumentet − product: {"_id": objectID ("52ffc4a5d85242602e000000"), "bygge": "22 A, Indiana Apt", "pinkode": 123456, "by": "Los Angeles", "stat": " California "}
Modellering Embedded relasjoner

I den innebygde tilnærming, vil vi legge inn adressen dokumentet inne brukeren dokumentet product: {." _id ": objectID (" 52ffc33cd85242f436000001 ")," kontakt ": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "adresse": [{"bygge": "22 A, Indiana Apt", "pinkode": 123456, " by ":" Los Angeles "," state ":" California "}, {" bygge ":" 170 A, Akropolis Apt "," pinkode ": 456789," by ":" Chicago "," stat ":" Illinois "}]}

Denne tilnærmingen opprettholder alle relaterte data i ett dokument som gjør det enkelt å hente og vedlikeholde. Hele dokumentet kan hentes i en enkelt spørring som dette −
> db.users.findOne ({"name": "Tom Benzamin"}, {"adresse": 1})

Merk at i ovenfor spørring, db Hotell og brukere
er henholdsvis databasen og samling.

Ulempen er at hvis det innlagte dokumentet holder på å vokse for mye i størrelse, det kan påvirke ytelsen lese /skrive.

Modellering Referert relasjoner

Dette er tilnærmingen med å designe normalisert forholdet. I denne tilnærmingen, både bruker- og adresse dokumenter vil bli opprettholdt separat, men brukeren dokumentet vil inneholde et felt som vil referere til id
feltet adressen dokumentets product: {"_id". ObjectID ("52ffc33cd85242f436000001" ), "kontakt": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin", "address_ids": [objectID ("52ffc4a5d85242602e000000"), objectID ("52ffc4a5d85242602e000001")] }

Som vist ovenfor, inneholder bruker dokumentet rekken feltet address_ids
som inneholder ObjectIds av tilsvar addresses.Using disse ObjectIds, kan vi spørre adresse dokumenter og få adresseopplysningene derfra. Med denne tilnærmingen, vil vi trenge to spørsmål: For det første å hente address_ids
felt fra bruker
dokument og andre til å hente disse adressene fra adresse
samling
. > Var resultat = db.users.findOne ({"name": "Tom Benzamin"}, {"address_ids": 1})> Var adresser = db.address.find ({"_ id": {"$ i": resultere ["address_ids"]}})



Previous: