Nút js mongodb một đến nhiều

MongoDB - Ví dụ về mối quan hệ một-nhiều Mongoose

Để biết thêm chi tiết, vui lòng truy cập

Nodejs & MongoDb. Hướng dẫn về mối quan hệ một-nhiều với các ví dụ về Mongoose

Thiết lập dự án

npm install

Chạy

node src/server.js

Trong cơ sở dữ liệu RDBMS như SQL Server, mối quan hệ giữa các bảng có thể là một đối một, một đối nhiều và nhiều đối nhiều

Trong MongoDB, các mối quan hệ một-một, một-nhiều và nhiều-nhiều có thể được triển khai theo hai cách

  1. Sử dụng tài liệu nhúng
  2. Sử dụng tài liệu tham khảo của bộ sưu tập khác

Triển khai quan hệ bằng cách sử dụng tài liệu nhúng

Bạn có thể bao gồm dữ liệu liên quan dưới dạng tài liệu được nhúng. Ví dụ: bạn có thể bao gồm địa chỉ dưới dạng tài liệu nhúng, như minh họa bên dưới

Thí dụ. Mối quan hệ sử dụng tài liệu nhúng

Sao chép

db.employee.insertOne({
     _id: ObjectId("32521df3f4948bd2f54218"),
    firstName: "John",
    lastName: "King",
    email: "[email protected]",
    salary: "33000",
    DoB: new Date('Mar 24, 2011'),
    address: { 
                street:"Upper Street",
                house:"No 1",
                city:"New York",
                country:"USA"
            }
})

Thực hiện quan hệ sử dụng Reference

Một cách khác để thực hiện các quan hệ là sử dụng tham chiếu trường khóa chính của các tài liệu của một bộ sưu tập khác

Ví dụ: tạo bộ sưu tập

node src/server.js
1 và sử dụng
node src/server.js
2 làm tài liệu tham khảo của tài liệu trong bộ sưu tập
node src/server.js
3

Thí dụ. Triển khai quan hệ một đối một bằng tham chiếu

Sao chép

db.address.insertOne({
     _id: 101,
    street:"Upper Street",
    house:"No 1",
    city:"New York",
    country:"USA"
})

db.employee.insertOne({
    firstName: "John",
    lastName: "King",
    email: "[email protected]",
    salary: "33000",
    DoB: new Date('Mar 24, 2011'),
    address: 101
})

Trong ví dụ trên, mối quan hệ giữa bộ sưu tập

node src/server.js
3 và
node src/server.js
1 được triển khai bằng cách sử dụng id tham chiếu. Một tài liệu trong bộ sưu tập
node src/server.js
3 chứa trường
node src/server.js
1 có giá trị của một
node src/server.js
2 hiện có trong bộ sưu tập
node src/server.js
1. Nó tạo thành quan hệ một đối một

Ghi chú. Bạn có thể tham chiếu bất kỳ trường nào cho quan hệ, nhưng nên sử dụng trường khóa chính duy nhất để tránh lỗi

Bạn có thể truy xuất dữ liệu liên quan theo hai bước. Sau đây lấy địa chỉ của một nhân viên

Thí dụ. Tìm tài liệu liên quan

Sao chép

var addrId = db.employee.findOne({firstName:'John'}).address;

db.address.findOne({_id:addrId});

Trong ví dụ trên, lấy trường

db.address.insertOne({
     _id: 101,
    street:"Upper Street",
    house:"No 1",
    city:"New York",
    country:"USA"
})

db.employee.insertOne({
    firstName: "John",
    lastName: "King",
    email: "[email protected]",
    salary: "33000",
    DoB: new Date('Mar 24, 2011'),
    address: 101
})
4 cho một nhân viên rồi tìm tài liệu địa chỉ bằng cách sử dụngaddrId

Sử dụng giai đoạn quy trình tổng hợp $lookup để tìm dữ liệu liên quan từ bộ sưu tập, như minh họa bên dưới

Chúng ta đều biết rằng mongodb không phải là một cơ sở dữ liệu quan hệ, nhưng nếu muốn, chúng ta có thể tạo tất cả các mối quan hệ ở cấp độ mô hình như một mô-đun tôi đã sử dụng cung cấp cùng một mô-đun. e Rest-Hapi. Bạn có thể tạo tất cả các mối quan hệ như một-một, một-nhiều, nhiều-một và nhiều-nhiều bằng cách xác định chúng trong mô hình. Như bạn đã xác định, nó sẽ tự động chèn dữ liệu vào db theo mối quan hệ bạn đã xác định. Giống như nếu bạn đã xác định quan hệ một-một thì nó sẽ tự động chèn _id vào cả hai mô hình khi bạn nhấn bất kỳ API nào liên quan đến chúng. Đối với hiệp hội một-một. - Trường lược đồ là bắt buộc đối với các liên kết loại ONE_TO_ONE, MANY_ONE. Trường này khớp với tên liên kết bao gồm loại ObjectId và cũng bao gồm thuộc tính ref có trong tên kiểu máy được liên kết. Ví dụ như bạn có thể xác định liên kết một-một như. - Đây là người mẫu cư trú của tôi

module.exports = function(mongoose) {
    var modelName = "occupant";
    var Types = mongoose.Schema.Types;
    var Schema = new mongoose.Schema({
        phone: {
            type: Types.String
        },
        webAddress: {
            type: Types.String
        },
	user: {
            type: Types.ObjectId,
            ref: "user"
        }
})

 Schema.statics = {
        collectionName: modelName,
        routeOptions: {
            alias: "Occupant",
            associations: {
                user: {
                    type: "ONE_ONE",
                    model: "user"
                }
	// other models association
	   }
	}
}
 

Và trong mô hình Người dùng, nó trông giống như. -

module.exports = function(mongoose) {
    var modelName = "user";
    var Types = mongoose.Schema.Types;
    var Schema = new mongoose.Schema({
        isActive: {
            type: Types.Boolean,
            default: true
        },
        password: {
            type: Types.String,
            required: true,
            exclude: true,
            allowOnUpdate: false
        },
 occupant: {
            type: Types.ObjectId,
            ref: "occupant"
        },
})
Schema.statics = {
        collectionName: modelName,
        routeOptions: {
            associations: {
               occupant: {
                    type: "ONE_ONE",
                    model: "occupant"
                }
		// other models association
	}
}
}

 

Cho MANY_TO_ONE HOẶC ONE-TO_MANY. - Tôi có một người dùng mô hình và tòa nhà. Nhiều người dùng có một tòa nhà và một tòa nhà có thể có nhiều người dùng. Vì vậy, trong mô hình Người dùng. -

________số 8

và hiệp hội trông giống như. -

building: {
                    type: "MANY_ONE",
                    alias: "building",
                    model: "building"
                },

 

Trong Hiệp hội mô hình xây dựng. -

node src/server.js
0

Vì vậy, với thao tác đơn giản, nó cũng tạo ra một số điểm cuối khác. - GET /building/{ownerId}/user Nhận tất cả người dùng cho một tòa nhà POST /building/{ownerId}/user Thêm nhiều người dùng vào một tòa nhà DELETE /building/{ownerId}/user Xóa nhiều người dùng khỏi danh sách tòa nhà

Ghi chú. Đối với Many_Many, vui lòng xem blog tiếp theo của tôi. Liên kết mô hình MANY_MANY trong nodejs mongodb bằng cách sử dụng Rest-Hapi

Làm cách nào bạn có thể triển khai 1 đến nhiều mối quan hệ trong MongoDB?

Trong MongoDB, quan hệ một-một, một-nhiều và nhiều-nhiều có thể được triển khai theo hai cách. .
Sử dụng tài liệu nhúng
Sử dụng tài liệu tham khảo của bộ sưu tập khác

MongoDB có tốt cho nút JS không?

Có thể xử lý nhiều loại dữ liệu và lượng dữ liệu khổng lồ . Nó cung cấp một Nút MongoDB. js cung cấp API JavaScript và triển khai giao thức mạng cần thiết để đọc và ghi từ cơ sở dữ liệu MongoDB cục bộ hoặc từ xa. Tất cả những gì bạn phải làm là cài đặt gói NPM -mongodb trong Mã ứng dụng của mình.

MongoDB có thể tạo nhiều mô hình không

Mối quan hệ nhiều-nhiều (N. M) . Điều này cũng đúng khi sử dụng mongoDB để triển khai chúng. Trên thực tế, bạn không thể sử dụng lệnh để tạo bất kỳ loại mối quan hệ nào trong MongoDB .

Điều gì có nghĩa là bởi một

Một-Nhiều (1. N) Cái 1. Mối quan hệ N mô tả mối quan hệ mà một bên có thể có nhiều hơn một mối quan hệ trong khi mối quan hệ ngược lại chỉ có thể là một bên. Một ví dụ là một Blog trong đó một blog có thể có nhiều Bình luận nhưng một Bình luận chỉ liên quan đến một Blog duy nhất