Latest web development tutorials

العلاقات MongoDB

أعربت العلاقة MongoDB الترابط بين وثائق متعددة في المنطق.

يمكنك إنشاء اتصال عن طريق دمج والمراجع بين المستندات.

العلاقة MongoDB يمكن أن يكون:

  • 1: 1 (1-1)
  • 1: N (1-كثير)
  • N: 1 (أزواج متعددة 1)
  • N: N (كثير إلى كثير)

نحن المقبل النظر في العلاقة بين المستخدم وعنوان المستخدم المقبل.

ويمكن للمستخدم الحصول على عناوين متعددة، وهي واحدة من العديد من العلاقة.

ما يلي هو وثيقة تكوين المستخدم بسيطة:

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

ما يلي هو وثيقة عنوان بنية بسيطة:

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

العلاقات جزءا لا يتجزأ من

باستخدام طريقة جزءا لا يتجزأ، لا يمكننا تضمين عنوان المستخدم إلى وثيقة للمستخدم:

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

يتم تخزين البيانات الواردة أعلاه في وثيقة واحدة، يمكنك الوصول بسهولة أكبر والحفاظ على البيانات. هل يمكن الاستعلام عنوان المستخدم:

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

ملاحظة:ديسيبل الاستعلام أعلاه يشير إلى قاعدة البيانات والمستخدمينوالمجموعات.

وعيب هذا الهيكل البيانات هو أنه إذا كان المستخدمين ومعالجة كمية متزايدة من البيانات يصبح أكبر وأكبر، سوف تؤثر على القراءة والكتابة الأداء.

العلاقة نوع مرجع

وكثيرا ما يستخدم نوع مرجع العلاقة في نهج تصميم قاعدة البيانات التي ملفات بيانات المستخدم وملف بيانات العنوان المستخدم بشكل منفصل لبناء العلاقات من خلال وثيقة مرجعية حقلمعرف.

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

فيالمثال أعلاه، وثيقة address_ids التي تحتوي على حقل كائن من هوية المستخدم للمجموعة عنوان المستخدم (ObjectId).

يمكننا أن نقرأ هذه الكائنات معرف عنوان المستخدم (ObjectId) للحصول على معلومات مفصلة حول عنوان المستخدم.

يتطلب هذا الأسلوب اثنين من الاستفسارات، عنوان أول كائن الاستعلام المستعمل البائع (ObjectId)، والعنوان الثاني للمزيد من المعلومات حول الاستعلام المستخدم من قبل معرف.

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