_id
필드를 가진다. _id는 어떤 타입이여도 상관없지만 컬렉션 내에서 unique해야 한다._id
의 디폴트 타입은 ObjectID 타입이며, ObjectID를 개발자가 입력하지 않았다면 MongoDB 드라이버가 만들어준다.type OjbectIDTestStruct struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Name string
}
testStruct := OjbectIDTestStruct{Name: "test1"}
// testSturct.ID = []uint{0,0,0,0,0,0,0,0}
collection.InsertOne(ctx, &testStruct)
// testSturct.ID = []uint{0,0,0,0,0,0,0,0}
testStruct := OjbectIDTestStruct{Name: "test1"}
// testSturct.ID = []uint{0,0,0,0,0,0,0,0}
result, err := collection.InsertOne(ctx, &testStruct)
testStruct.ID = result.InsertedID
// testStruct.ID = []uint{97,206,146,190,8,...}
myStruct.ID.Timestamp
While ObjectId values should increase over time, they are not necessarily monotonic. This is because they:
Only contain one second of temporal resolution, so ObjectId values created within the same second do not have a guaranteed ordering, and Are generated by clients, which may have differing system clocks.