Đối với dự án của tôi, tôi muốn giữ một tài liệu mongoose cho các nhóm của các tổ chức, như thế này:giá trị Mongoose độc đáo trong mảng lồng nhau của các đối tượng
var groupSchema = Schema({
name : { type : String },
org : { type : Schema.Types.ObjectId, ref : 'Organization' },
...
users : [{
uid : { type : Schema.Types.ObjectId, ref : 'User' },
...
}]
});
tôi muốn ngăn chặn người sử dụng cùng một từ là trong cùng một nhóm hai lần. Để làm điều này, tôi cần phải ép buộc users.uid là duy nhất trong mảng người dùng. Tôi đã thử nói 'độc đáo: đúng' cho uid, nhưng điều đó không hiệu quả. Có cách nào để làm điều này với mongoose hoặc mongoDB mà không cần truy vấn thêm hoặc tách lược đồ?
Edit: tôi đã thay đổi giá trị trước đó của uid để uid: {type: Schema.Types.ObjectId, ref: 'Người dùng', chỉ số: {độc đáo: đúng, dropDups: true}} Nhưng điều này vẫn doesn dường như không hoạt động.
Chỉnh sửa: Giả sử không có cách đơn giản để đạt được điều này, tôi đã thêm một truy vấn bổ sung kiểm tra xem người dùng đã có trong nhóm chưa. Điều này dường như với tôi cách đơn giản nhất.
kiểm tra điều này sẽ hữu ích (http://stackoverflow.com/questions/12395118/mongodb-setting-unique-field) – karthick
Cảm ơn bạn đã liên kết. Tôi đã thử như sau: uid: {type: Schema.Types.ObjectId, ref: 'Người dùng', chỉ mục: {unique: true, dropDups: true}} thay vì giá trị cũ cho uid. Điều này vẫn không hoạt động, tôi cũng đã cố gắng khởi động lại mongoDB mà không thành công. –