Latest web development tutorials

MongoDB Beziehungen

MongoDB Beziehung ausgedrückt Verflechtungen zwischen mehreren Dokumenten in der Logik.

Sie können Kontakt durch die Einbettung und Verweise zwischen Dokumenten herzustellen.

Die MongoDB Beziehung kann sein:

  • 1: 1 (1 bis 1)
  • 1: N (1-many)
  • N: 1 (mehrere Paare 1)
  • N: N (viele zu viele)

Als nächstes betrachten wir die Beziehung zwischen dem Benutzer und der nächsten Adresse des Benutzers.

Ein Benutzer kann mehrere Adressen haben, ist es ein bis viele-Beziehung.

Im Folgenden ist eine einfache Benutzerkonfiguration Dokument:

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

Im Folgenden ist eine einfache Struktur Adressdokument:

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

Embedded Beziehungen

die eingebettete Methode verwenden, können wir die Benutzer-Adresse zu dem Dokument des Benutzers einbetten:

   "_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"
      }]
} 

Die oben genannten Daten in einem einzigen Dokument gespeichert wird, können Sie leichter zugreifen und Daten erhalten. Sie könnten die Adresse des Benutzers abfragen:

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

Hinweis: Die obige Abfragedb zeigt Datenbank und Benutzerund Sammlungen.

Der Nachteil dieser Datenstruktur ist, dass, wenn Benutzer und adressieren den steigenden Datenmenge größer und größer wird, wird die Lese beeinflussen und Schreibleistung.

Sollwertart Beziehung

Referenztyp Beziehung wird oft in Datenbank - Design - Ansatz , dass die Benutzerdatendateien und Benutzeradressdatendatei separat Beziehungen von Dokument -ID Feldverweis zu bauen.

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

Das obigeBeispiel, address_ids Dokument das Objektfeld der Benutzer - ID des Benutzers Adresse (ObjectId) Array enthält.

Wir können diese Objekte ID des Benutzers Adresse (ObjectId) lesen detaillierte Informationen über die Benutzer-Adresse zu erhalten.

Diese Methode erfordert zwei Abfragen, die erste Abfrage-Objekt-ID des Benutzers Adresse (ObjectId), die zweite Adresse für weitere Informationen über die Anfrage des Nutzers von id.

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