2013-07-30 24 views
7

Tôi có thể định nghĩa một lược đồ trong mongodb yêu cầu các thuộc tính nhất định được thiết lập hay không. Giống như NOT NULL trong SQL. Nếu điều đó là có thể. Cú pháp cho điều này là gì?Tôi có thể yêu cầu một thuộc tính được đặt trong bộ sưu tập mongodb không? (không null)

Tôi đang sử dụng node.js và mongoose. mongoose v3.6.15 MongoDB v2.4.5

Sửa Câu trả lời được cung cấp bởi Charles A là đúng nhưng nhìn qua các tài liệu tôi thấy rằng trong mongoose nó cũng có thể định nghĩa một lĩnh vực theo yêu cầu trong các defenition schema như thế này:

foo : { 
    bar : { type : String, required : true } 
} 
+0

mà lái xe bạn đang sử dụng? Tôi biết làm thế nào để làm điều đó trong java với mùa xuân. – Jayz

+0

@Jayz Trả lời câu hỏi được cập nhật ... –

+0

@LudwigMagnusson Sẽ tốt hơn nếu bạn thêm câu trả lời của riêng mình làm câu trả lời riêng cho câu hỏi này và sau đó chấp nhận rằng khi sử dụng 'required: true' là cách tốt nhất để làm điều này. – JohnnyHK

Trả lời

7

Trong Mongoose, bạn có thể sử dụng validator để kiểm tra xem trường đã được đặt trước khi lưu chưa. Theo như tôi biết, không có cách nào để xác định một Schema rằng một trường là bắt buộc, do đó, nó đòi hỏi một chút mã soạn sẵn.

-3

Câu trả lời chung cho câu hỏi này không liên quan đến Mongoose, đó là câu hỏi MongoDB đơn giản về việc bạn có thể yêu cầu một khóa cụ thể trong mọi tài liệu hay không.

Câu trả lời là: CÓ. Tạo một chỉ mục duy nhất trên bộ sưu tập này. Chỉ mục phải là trường bắt buộc. Sẽ chỉ có một tài liệu với trường có giá trị null, do đó thực thi sự hiện diện của trường đó trong tất cả các tài liệu. Đánh bại điều này với 'thưa thớt'.

Xem: http://docs.mongodb.org/manual/core/indexes/

Cụ thể, phần về chỉ mục duy nhất. Lưu ý, điều này sẽ không hoạt động đối với các trường thuộc loại 'băm'.

+6

Nhưng tôi không yêu cầu nó là duy nhất ... –

Các vấn đề liên quan