Spring MongoDB _id field mapping conventions

Java Spring MongoDB  : '_id' field mapping :

MongoDB requires that you have an '_id' field for all documents. If you don’t provide one the driver will assign a ObjectId with a generated value. The "_id" field can be of any type the, other than arrays.

The following outlines what field will be mapped to the '_id' document field:
  • A field annotated with @Id (org.springframework.data.annotation.Id) will be mapped to the '_id' field.
  • A field without an annotation but named 'id' will be mapped to the '_id' field.
  • The default field name for identifiers is '_id' and can be customized via the @Field annotation.

Examples for the translation of '_id'-field definitions

Field definition Resulting Id-Fieldname in MongoDB
String id
@Field String id
@Field('x') String id
@Id String x
@Field('x') @Id String x

Source :  How the '_id' field is handled in the mapping layer