Latest web development tutorials

Stosunki MongoDB

relacja MongoDB wyrażone wzajemne powiązania między wieloma dokumentami w logice.

Można nawiązać kontakt poprzez osadzenie i odniesień między dokumentami.

Związek MongoDB mogą być:

  • 1: 1 (1 do 1)
  • 1: N (1-wielu)
  • N: 1 (kilka par 1)
  • N: N (wiele do wielu)

Następnie pod uwagę relacje między użytkownikiem i adres użytkownika następnego.

Użytkownik może mieć wiele adresów, jest to jeden z wielu relacji.

Poniżej znajduje się prosty dokument Konfiguracja użytkownika:

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "name": "Tom Hanks",
   "contact": "987654321",
   "dob": "01-01-1991"
}

Poniżej znajduje się prosty dokument adres struktury:

{
   "_id":ObjectId("52ffc4a5d85242602e000000"),
   "building": "22 A, Indiana Apt",
   "pincode": 123456,
   "city": "Los Angeles",
   "state": "California"
} 

Stosunki embedded

Korzystanie z wbudowanego sposób możemy umieścić adres użytkownika do dokumentu przez użytkownika:

   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address": [
      {
         "building": "22 A, Indiana Apt",
         "pincode": 123456,
         "city": "Los Angeles",
         "state": "California"
      },
      {
         "building": "170 A, Acropolis Apt",
         "pincode": 456789,
         "city": "Chicago",
         "state": "Illinois"
      }]
} 

Powyższe dane są przechowywane w jednym dokumencie, można łatwiej uzyskać dostęp i utrzymania danych. Można zapytać adres użytkownika:

>db.users.findOne({"name":"Tom Benzamin"},{"address":1})

Uwaga: Powyższe wskazujedb kwerendy bazy danych i użytkownikóworaz zbiorów.

Wadą tej struktury danych jest to, że jeśli użytkownicy oraz rozwiązanie problemu rosnącej ilości danych staje się coraz większy, wpłynie na wydajność odczytu i zapisu.

Typ referencyjny relacja

Typ referencyjny związek jest często stosowany w podejściu do projektowania bazy danych, pliki danych użytkownika i adres pliku danych użytkownika oddzielnie do budowania relacji przez poleid dokumentu referencyjnego.

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000"),
      ObjectId("52ffc4a5d85242602e000001")
   ]
}

Powyższyprzykład, address_ids dokument zawierający pole obiektu o identyfikatorze użytkownika adresu użytkownika (ObjectId) tablicy.

Możemy przeczytać te obiekty adres ID użytkownika (ObjectId), aby uzyskać szczegółowe informacje o adresie użytkownika.

Metoda ta wymaga dwóch zapytań, adres pierwszego obiektu zapytania id użytkownika (objectID), drugi adres Więcej informacji na zapytania użytkownika przez ID.

>var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})
>var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})