MongoDB cho phép tạo cấu trúc JSON phân cấp sâu thông qua lồng tài liệu và mảng tài liệu. Cú pháp tổng quát:
db.demo716.insertOne({
yourFieldName1,
yourFieldName2,
"fieldName": {
yourFieldName1,
yourFieldName2,
"fieldname": [
{ yourFieldName1, yourFieldName2, ..., N }
]
}
});
Ví dụ thực tế - hồ sơ người dùng với thông tin giảng viên:
> db.demo716.insertOne({
... "id": 101,
... "UserEmailId": "John@gmail.com",
... "UserPassword": "123456",
... "UserInformation": {
... "UserName": "Chris",
... "UserAge": 26,
... "UserCountryName": "US",
... "OtherInformation": [
... { "TeacherName":"Robert", "SubjectName":"MongoDB", "CollegeName":"MIT" }
... ]
... }
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5ea9b1ff85324c2c98cc4c2f") }
Hiển thị dữ liệu phân cấp:
> db.demo716.find().pretty();
{ "_id" : ObjectId("5ea9b1ff85324c2c98cc4c2f"), "id" : 101, "UserEmailId" : "John@gmail.com", "UserPassword" : "123456", "UserInformation" : { "UserName" : "Chris", "UserAge" : 26, "UserCountryName" : "US", "OtherInformation" : [ { "TeacherName" : "Robert", "SubjectName" : "MongoDB", "CollegeName" : "MIT" } ] } }
Ưu điểm mô hình phân cấp:
- Dữ liệu liên quan lưu cùng nhau - đọc một lần lấy hết
- Không cần JOIN như SQL
- Linh hoạt schema - mỗi tài liệu có thể khác cấu trúc
- Phù hợp dữ liệu phi chuẩn hóa (denormalized)