2012-03-14 27 views

Trả lời

43

Tôi cho rằng đó chỉ là lỗi đánh máy trong tài liệu. Trường _id là khóa chính cho mọi tài liệu. Nó được gọi là _id và cũng có thể truy cập qua id. Việc cố gắng sử dụng khóa id có thể dẫn đến lỗi illegal ObjectId format.

Phần đó chỉ cho biết rằng các ObjectID được tạo tự động bắt đầu bằng dấu thời gian để có thể sắp xếp tài liệu của bạn tự động. Điều này là khá mát mẻ kể từ khi _id được tự động lập chỉ mục trong mỗi bộ sưu tập. Xem http://www.mongodb.org/display/DOCS/Object+IDs để biết thêm thông tin. Cụ thể trong "BSON ObjectID Specification".

Một đối tượng BSON là giá trị 12 byte bao gồm dấu thời gian 4 byte (giây từ epoch), id máy 3 byte, id tiến trình 2 byte và bộ đếm 3 byte. Lưu ý rằng các dấu thời gian và các trường truy cập phải được lưu trữ lớn endian không giống như phần còn lại của BSON.

+6

là bắt buộc '_id' cho mỗi tài liệu của bộ sưu tập? nói cách khác, tôi có thể tạo một tài liệu mới mà không có trường '_id' không? –

+2

@KevinMeredith Như được chỉ định [ở đây] (https://docs.mongodb.com/manual/reference/bson-types/#objectid), có, trường '_id' là bắt buộc.«Trong MongoDB, mỗi tài liệu được lưu trữ trong một bộ sưu tập yêu cầu một trường' _id' duy nhất hoạt động như một khóa chính. Nếu một tài liệu được chèn vào bỏ qua trường '_id', trình điều khiển MongoDB sẽ tự động tạo một' ObjectId' cho trường '_id'». – BowPark

10

Trường _id là trường mặc định cho Bson ObjectId và theo mặc định, được lập chỉ mục.

_id và id không giống nhau. Bạn cũng có thể chọn thêm một trường được gọi là id nếu bạn muốn, nhưng nó sẽ không được lập chỉ mục trừ khi bạn thêm chỉ mục.

Nó chỉ là lỗi đánh máy trong tài liệu.

0

tôi hai xu:

Các _id lĩnh vực

MongoDB gán một trường _id cho mỗi tài liệu và gán chỉ số chính trên nó. Có nhiều cách để chúng tôi có thể áp dụng chỉ số phụ. Theo mặc định, MongoDB tạo giá trị cho trường _id loại ObjectID. Giá trị này được quy định tại BSON spec và nó có cấu trúc như sau:

ObjectId (12 byte HEX string) = Ngày (4 byte, một giá trị timestamp đại diện cho số giây kể từ khi kỷ nguyên Unix) địa chỉ + MAC (3 byte) + PID (2 byte) + Số lượt truy cập (3 byte)

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