2010-07-21 32 views

Trả lời

66
Trường

_id được dành riêng cho khóa chính trong mongodb và đó phải là giá trị duy nhất. Nếu bạn không đặt bất kỳ thứ gì thành _id, nó sẽ tự động điền vào nó với "MongoDB Id Object". Nhưng bạn có thể đặt bất kỳ thông tin duy nhất nào vào trường đó.

Thông tin bổ sung: http://www.mongodb.org/display/DOCS/BSON

Hy vọng điều đó sẽ hữu ích.

+32

này thực sự không trả lời cho 'làm thế nào để thiết lập một trong những lĩnh vực của tôi như key' tiểu học, ví dụ: tôi muốn user_email như quan trọng trong bộ sưu tập của người dùng, nhưng làm thế nào để thiết lập đó trường là khóa và duy nhất –

1

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

Bạn cũng có thể kiểm tra liên kết này và tự động tăng lĩnh vực _id.

+13

Lưu ý rằng [câu trả lời chỉ liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, các câu trả lời SO phải là điểm kết thúc của tìm kiếm một giải pháp (so với một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

+1

Liên kết đã bị hỏng, do đó câu trả lời này là vô dụng – PeterM

1

Một cách để đạt được hành vi này là đặt giá trị thành trường _id (được dành riêng cho khóa chính trong MongoDB) dựa trên trường tùy chỉnh bạn muốn coi là khóa chính.
tức là nếu tôi muốn employee_id làm khóa chính thì tại thời điểm tạo tài liệu trong MongoDB; chỉ định _id giá trị tương tự như employee_id.

14

Cách khác là tạo Indexes cho bộ sưu tập của bạn và đảm bảo rằng chúng là duy nhất.

Bạn có thể tìm hiểu thêm tại sau link

Tôi thực sự tìm thấy điều này khá đơn giản và dễ thực hiện.

+2

"Ràng buộc duy nhất trên các chỉ mục đảm bảo rằng chỉ một tài liệu có thể có giá trị cho một trường trong một bộ sưu tập. cho từng phân đoạn "--https: //docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ – JohnC

8

Trong trường mongodb _id được dành riêng cho khóa chính. Mongodb sử dụng một giá trị ObjectId bên trong nếu bạn không định nghĩa nó trong đối tượng của bạn và cũng tạo ra một chỉ mục để đảm bảo hiệu suất.

Nhưng bạn có thể đặt giá trị duy nhất của riêng bạn cho _id và Mongodb sẽ sử dụng nó thay vì làm một cho bạn. Và thậm chí nếu bạn muốn sử dụng nhiều lĩnh vực như khóa chính, bạn có thể sử dụng một đối tượng:

{ _id : { a : 1, b: 1} } 

Chỉ cần cẩn thận khi tạo các id rằng thứ tự các phím (a và b trong ví dụ) các vấn đề, nếu bạn thay đổi chúng xung quanh, nó được coi là một đối tượng khác nhau.

3

Nếu bạn nghĩ như RDBMS bạn không thể tạo khóa chính, khóa chính mặc định là _id. Nhưng bạn có thể tạo Unique Index. Ví dụ dưới đây.

db.members.createIndex({ "user_id": 1 }, { unique: true }) 

db.members.insert({'user_id':1,'name':'nanhe'}) 

db.members.insert({'name':'kumar'}) 

db.members.find(); 

Kết quả được hiển thị dưới đây.

{ "_id": ObjectId ("577f9cecd71d71fa1fb6f43a"), "user_id": 1, "tên": "Nanhe"}

{ "_id": ObjectId ("577f9d02d71d71fa1fb6f43b"), "tên": "kumar"}

Khi bạn cố gắng chèn cùng một lỗi user_id mongodb trow write.

db.members.insert({'user_id':1,'name':'aarush'}) 

WriteResult ({ "nInserted": 0, "writeError": { "code": 11000, "errmsg": "E11000 lặp lại bộ sưu tập lỗi quan trọng: Chỉ số student.members: Phím dup user_id_1 : {: 1,0}" } })

4

đơn giản bạn có thể sử dụng db.collectionName.createIndex({urfield:1},{unique:true});

2

Đây là cú pháp của việc tạo ra chính quan trọng

db. < bộ sưu tập> .createIndex (< chìa khóa và loại chỉ số đặc điểm kỹ thuật>, { độc đáo: true})

Chúng ta hãy rằng cơ sở dữ liệu của chúng tôi đã sưu tập được đặt tên sinh viên và tài liệu của nó đã khóa có tên student_id mà chúng ta cần để tạo khóa chính. Sau đó, lệnh sẽ giống như dưới đây.

db.student.createIndex({student_id:1},{unique:true}) 

Bạn có thể kiểm tra xem này student_id bộ như khóa chính bằng cách cố gắng để gia tăng giá trị trùng lặp với sinh viên bộ sưu tập.

thích tài liệu này để thông tin thêm https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index

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