Tutorial MongoD...login
Tutorial MongoDB
pengarang:php.cn  masa kemas kini:2022-04-21 17:49:03

Perhubungan MongoDB


Perhubungan MongoDB mewakili kesalinghubungan logik antara berbilang dokumen.

Hubungan antara dokumen boleh diwujudkan melalui pembenaman dan petik.

Hubungan dalam MongoDB boleh menjadi:

  • 1:1 (1 hingga 1)

  • 1: N (1 hingga banyak)

  • N: 1 (banyak kepada 1)

  • N: N (banyak kepada banyak)


Seterusnya, mari kita pertimbangkan hubungan antara pengguna dan alamat pengguna.

Seorang pengguna boleh mempunyai berbilang alamat, jadi ia merupakan perhubungan satu dengan banyak.

Berikut ialah struktur ringkas dokumen pengguna:

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

Berikut ialah struktur ringkas dokumen alamat:

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

Perhubungan terbenam

Menggunakan kaedah terbenam, kami boleh membenamkan alamat pengguna ke dalam dokumen pengguna:

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

Data di atas disimpan dalam satu dokumen, yang boleh mudah diperoleh dan diselenggara data. Anda boleh menanyakan alamat pengguna seperti ini:

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

Nota: Dalam pertanyaan di atas, db dan pengguna mewakili pangkalan data dan koleksi.

Kelemahan struktur data ini ialah jika pengguna dan alamat pengguna terus meningkat, jumlah data terus meningkat, yang akan menjejaskan prestasi baca dan tulis.

Hubungan rujukan

Hubungan rujukan ialah kaedah yang sering digunakan semasa mereka bentuk pangkalan data Kaedah ini memisahkan dokumen data pengguna dan dokumen data alamat pengguna dengan merujuk id dokumen medan untuk menjalinkan hubungan.

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

Dalam contoh di atas, medan address_ids dokumen pengguna mengandungi tatasusunan ObjectId alamat pengguna.

Kita boleh membaca id objek (ObjectId) alamat pengguna ini untuk mendapatkan maklumat alamat terperinci pengguna.

Kaedah ini memerlukan dua pertanyaan Kali pertama adalah untuk menanyakan ID objek (ObjectId) alamat pengguna, dan kali kedua adalah untuk mendapatkan maklumat alamat terperinci pengguna melalui ID pertanyaan.

rreeee

Laman web PHP Cina