Trước hết, có một sự khác biệt rất lớn giữa các mối quan hệ trong MongoDB và những người trong kho dữ liệu dựa trên SQL (bạn cần phải rõ ràng về điều này từ get-go).
Mối quan hệ trong MongoDB chỉ là biểu diễn của dữ liệu liên quan. Không có cơ chế duy trì tính toàn vẹn của các mối quan hệ này.
Mongoose với refs chỉ sử dụng trường có tùy chọn ref
để truy vấn trường tài liệu _id
trong bộ sưu tập được tham chiếu. Điều này được sử dụng cho các hoạt động như populate
(gọi nội bộ là findById
truy vấn trên bộ sưu tập đích và thay thế trường được tham chiếu bằng tài liệu).
Điều này đang bị xóa, bạn có thể lưu trữ một hoặc nhiều ID cho bộ sưu tập được tham chiếu trong trường, do đó tạo mối quan hệ "một đối một hoặc một".
Vì vậy, để lưu trữ một ID duy nhất cho một bộ sưu tập tham chiếu, cú pháp sẽ là:
client: {type: Mongoose.Schema.Types.ObjectId, ref: 'Client'} //No arrays, as we want to store a single ID only.
Trong cùng một cách, bạn có thể lưu trữ nhiều ID cho bộ sưu tập tham chiếu như vậy:
friends: [{type: Mongoose.Schema.Types.ObjectId, ref: 'User'}] //The array stores multiple IDs, creating a one-to-many "relationship"
EDIT:
Đảm bảo bạn có require
d mô-đun Mongoose lúc đầu.
var Mongoose = require('mongoose');
Sau đó, chỉ cần không sử dụng mảng. – qqilihq
Cảm ơn, nhưng điều này không thực sự hữu ích - tôi mới sử dụng nút và mongoose, vì vậy cú pháp là xa lạ với tôi. – Slippy