모든 MongoDB 도큐먼트는 프라이머리 키가 필요하다. 각 컬렉션에는 모든 도큐먼트에 걸쳐 유일해야만 하는 _id 필드가 존재한다. 개발자가 _id에 임의의 값을 넣어주는 것도 가능하지만, 주어지지 않을 경우 ObjectID가 자동으로 들어가게 된다.
몽고DB 드라이버는 서버에 도큐먼트가 전송되기 전에 _id 필드가 존재하는지 살펴본뒤, 존재하지 않다면 Object ID를 생성하여 넣어준다.
ObjectID는 몽고DB에서 전역적으로 고유함을 보장하도록 설계되었다. 어떻게 이것이 가능할까?

Object ID는 서버가 아닌 클라이언트의 드라이버에서 생성된다는 점이 중요하다.
서버 상에서 값을 증가시키는 Auto Increment와 같은 방식과는 반대되며, 클라이언트의 드라이버에서 생성되기 때문에 서버의 병목현상이 생기지 않는다.