- Mastering MongoDB 3.x
- Alex Giamas
- 164字
- 2021-08-20 10:10:50
ObjectId
ObjectId is a special data type for MongoDB. Every document has an _id field from cradle to grave. It is the primary key for each document in a collection and has to be unique. If we omit this field in a create statement, it will be assigned automatically with an ObjectId.
Messing with the ObjectId is not advisable but we can use it (with caution!) for our purposes.
ObjectId is:
- 12-bytes
- Ordered; sorting by _id will sort by creation time for each document
- Storing the creation time that can be accessed by .getTimeStamp() in the shell
The structure of an ObjectId:
- a 4-byte value representing the seconds since the Unix epoch
- a 3-byte machine identifier
- a 2-byte process id
- a 3-byte counter, starting with a random value

By their structure, ObjectIds will be unique for all purposes; however since these are generated on the client side, one should check the underlying library's source code to verify that implementation is according to specification.