Diferença entre decorar uma propriedade em C # com BsonRepresentation (BsonType.ObjectId) vs BsonId vs ObjectId

Sou novo no mongodb e estou gostando de como é fácil não se preocupar com coisas de esquema, tenho uma pergunta suponha que você queira uma propriedade Id nos usos mongo e mongoObjectId para indicar os IDs de propriedade. Até agora, vejo que você pode ter ou decorar um ID da seguinte maneira,

public ObjectId Id {get; set;}

//or

[BsonId]
public string Id {get; set;}

//or

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id {get; set;}

Alguém pode me explicar por que a maioria das pessoas escolhe o último tipo, o que está acontecendo e como a flexibilidade ajuda. Obrigado?

questionAnswers(1)

yourAnswerToTheQuestion