Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
Sử dụng các chức năng mô hình Mongoose để tạo tài liệu ..
- Các tài liệu được tham chiếu ..
- Các tùy chọn mối quan hệ khác nhau có sẵn trong MongoDB là gì?
Các loại mối quan hệ MongoDB. In this model, the documents are embedded inside one document. For example, we have two documents one is a student[which contains the basic information of the student like id, name branch] and another is an address document[which contains the address of the student]. So, instead of creating two different documents, we embed the address documents inside the student document. It will help the user to retrieve the data using a single query rather than writing a bunch of queries.
Mối quan hệ nhúng. Nói một cách đơn giản, khi chúng tôi cố gắng nhúng một tài liệu BSON, nó được gọi là các mối quan hệ nhúng trong MongoDB với bất kỳ tài liệu nào khác. ....In this model, we maintain the documents separately but one document contains the reference of the other documents. For example, we have two documents one is a student[which contains the basic information of the student like id, name branch] and another is an address document[which contains the address of the student]. So, here student document contains the reference to the address document’s id field. Now using this reference id we can query the address and get the address of the student. This model is generally used to design the normalized relationships.
Tài liệu được tham chiếu các mối quan hệ. ....
Nhiều mối quan hệ. ....
Đường ống tổng hợp ..
// Student document { StudentName: GeeksA, StudentId: g_f_g_1209, Branch:CSE } // Address document { StudentName: GeeksA, PremanentAddress: XXXXXXX, City: Delhi, PinCode:202333 }
Bây giờ, nếu dữ liệu địa chỉ được sử dụng thường xuyên, người dùng sẽ truy xuất dữ liệu của tài liệu địa chỉ bằng cách tạo một truy vấn bằng tên sinh viên nhưng ở đây hai tài liệu chứa cùng một trường [tức là, studentName] để người dùng cần viết thêm một vài truy vấn để truy xuất thông tin cần thiết. Quá trình lấy dữ liệu này là cồng kềnh. Vì vậy, chúng tôi đã nhúng tài liệu địa chỉ trong tài liệu sinh viên. & NBSP;
{ StudentName: GeeksA, StudentId: g_f_g_1209, Branch:CSE PermanentAddress:{ PremanentAddress: XXXXXXX, City: Delhi, PinCode:202333 } }
Bây giờ, chúng tôi chỉ phải viết một truy vấn duy nhất để truy xuất dữ liệu cần thiết. Ưu điểm của việc sử dụng các tài liệu nhúng là chúng tôi có thể nhóm các thông tin cần thiết và có thể giữ nó trong một tài liệu duy nhất. Vì vậy, nó dễ dàng hơn để có được các chi tiết trong một cuộc gọi chính nó. Nhưng khi tài liệu bắt đầu phát triển, ví dụ, thêm thông tin học tập, thông tin điền kinh vào tài liệu trên, nó sẽ trở nên dài hơn và mất nhiều thời gian hơn để lấy chi tiết. Chỉ khi được yêu cầu, chúng ta có thể cần phải có thông tin học tập hoặc thể thao, và do đó trong các kịch bản đó, chúng ta có thể cần phải chia nhỏ tài liệu và có thể tìm một mẫu tập hợp con. Trong mẫu tập hợp con, chúng tôi chia số lượng lớn thông tin thành các khối nhỏ để chúng tôi có thể dễ dàng truy xuất dữ liệu. Bởi vì tổng dữ liệu lớn làm chậm hoạt động đọc. & nbsp; Nhưng mẫu tập hợp con cũng có một nhược điểm là chia dữ liệu của bạn thành nhiều bộ sưu tập nhỏ, phần bảo trì cơ sở dữ liệu rất khó khăn và theo dõi dữ liệu cũng sẽ trở thành rắc rối.subset pattern. In the Subset pattern, we break the large sum of information into small chunks so that we can easily retrieve data. Because the large sum of data slows down the read operation. But subset pattern has also a drawback that is splitting your data into many small collections, the database maintenance part is difficult, and tracking for the data will also become a hassle.
Example:
Ở đây, chúng tôi đang làm việc với:
Cơ sở dữ liệu: GFG gfg
Bộ sưu tập: Sinh viên student
Tài liệu: Một tài liệu chứa các chi tiết của một học sinh One document that contains the details of a student
Bây giờ chúng tôi sẽ hiển thị địa chỉ của học sinh
db.student.find[{StudentName:"GeeksA"},{"PermanentAddress.permaAddress":1}].pretty[]
Mối quan hệ một-nhiều với các tài liệu nhúng
Sử dụng các tài liệu nhúng, chúng tôi có thể tạo mối quan hệ một-nhiều giữa dữ liệu để chúng tôi có thể dễ dàng truy xuất dữ liệu bằng một vài thao tác đọc. Bây giờ chúng tôi sẽ thảo luận về mối quan hệ một-nhiều với các tài liệu nhúng với sự trợ giúp của một ví dụ. Đôi khi, có khả năng của một người chứa nhiều địa chỉ như có một địa chỉ hiện tại [nơi anh ấy/cô ấy ở] và địa chỉ dân cư [nơi anh ấy/cô ấy có nhà riêng hoặc địa chỉ thường trú]. Trong thời gian đó, một đến nhiều khả năng mối quan hệ xảy ra. Vì vậy, chúng ta có thể sử dụng một mô hình tài liệu nhúng để lưu trữ địa chỉ vĩnh viễn và hiện tại trong một tài liệu duy nhất
// Student document { StudentName: GeeksA, StudentId: g_f_g_1209, Branch:CSE } // Permanent Address document { StudentName: GeeksA, PermanentAddress: XXXXXXX, City: Delhi, PinCode:202333 } // Current Address document { StudentName: GeeksA, CurrentAddress: XXXXXXX, City: Mumbai, PinCode:334509 }
Bây giờ thay vì viết ba tài liệu, chúng tôi có thể nhúng chúng vào một tài liệu duy nhất.
// Student document { StudentName: GeeksA, StudentId: g_f_g_1209, Branch:CSE Address: [ { StudentName: GeeksA, PermanentAddress: XXXXXXX, City: Delhi, PinCode:202333 }, { StudentName: GeeksA, CurrentAddress: XXXXXXX, City: Mumbai, PinCode:334509 } ] }
Khi chúng tôi giữ tất cả dữ liệu [ngay cả khi có nhiều hơn 2 loại thông tin địa chỉ, chúng tôi có thể giữ chúng trong một mảng JSON] trong một bộ sưu tập duy nhất, chúng tôi có thể truy vấn trong một cuộc gọi và nhận toàn bộ bộ dữ liệu, dẫn Để có được toàn bộ thông tin và không có tổn thất xảy ra.
Example:
Ở đây, chúng tôi đang làm việc với:
Cơ sở dữ liệu: GFG gfg
Bộ sưu tập: Sinh viên student
Tài liệu: Một tài liệu chứa các chi tiết của một học sinh One document that contains the details of a student
Bây giờ chúng tôi sẽ hiển thị địa chỉ của học sinh
db.student.find[{StudentName:"GeeksA"}, {"Address.permaAddress":1, "Address.currAddress":1}].pretty[]
Mối quan hệ một-nhiều với các tài liệu nhúng
Sử dụng các tài liệu nhúng, chúng tôi có thể tạo mối quan hệ một-nhiều giữa dữ liệu để chúng tôi có thể dễ dàng truy xuất dữ liệu bằng một vài thao tác đọc. Bây giờ chúng tôi sẽ thảo luận về mối quan hệ một-nhiều với các tài liệu nhúng với sự trợ giúp của một ví dụ. Đôi khi, có khả năng của một người chứa nhiều địa chỉ như có một địa chỉ hiện tại [nơi anh ấy/cô ấy ở] và địa chỉ dân cư [nơi anh ấy/cô ấy có nhà riêng hoặc địa chỉ thường trú]. Trong thời gian đó, một đến nhiều khả năng mối quan hệ xảy ra. Vì vậy, chúng ta có thể sử dụng một mô hình tài liệu nhúng để lưu trữ địa chỉ vĩnh viễn và hiện tại trong một tài liệu duy nhất
Bây giờ thay vì viết ba tài liệu, chúng tôi có thể nhúng chúng vào một tài liệu duy nhất.
// Teacher document { teacherName: Sunita, TeacherId: g_f_g_1209, } // Class 1 document { TeacherId: g_f_g_1209, ClassName: GeeksA, ClassId: C_123 Studentcount: 23, Subject: "Science", } // Class 2 document { TeacherId: g_f_g_1209, ClassId: C_234 ClassName: GeeksB, Studentcount: 33, Subject: "Maths", }
Khi chúng tôi giữ tất cả dữ liệu [ngay cả khi có nhiều hơn 2 loại thông tin địa chỉ, chúng tôi có thể giữ chúng trong một mảng JSON] trong một bộ sưu tập duy nhất, chúng tôi có thể truy vấn trong một cuộc gọi và nhận toàn bộ bộ dữ liệu, dẫn Để có được toàn bộ thông tin và không có tổn thất xảy ra.
// Teacher document { teacherName: Sunita, TeacherId: g_f_g_1209, classIds: [ C_123, C_234 ] }
Bây giờ chúng tôi sẽ hiển thị tất cả các địa chỉ của học sinh
Example:
Ở đây, chúng tôi đang làm việc với:
Cơ sở dữ liệu: GFG gfg
Bộ sưu tập: Sinh viên teacher
Tài liệu: Một tài liệu chứa các chi tiết của một học sinh three document that contains the details of the classes
Bây giờ chúng tôi sẽ hiển thị địa chỉ của học sinh
db.teacher.findOne[{name:"Sunita"}, {classId:1}]