MongoDB mengharuskan setiap dokumen yang disimpan dalam database memiliki bidang (di tingkat root) yang disebut "_id".
Driver C# mengasumsikan bahwa bidang apa pun di kelas Anda yang disebut "Id", "id" atau "_id" dimaksudkan untuk dipetakan ke bidang "_id" khusus. Ini adalah konvensi, yang bisa ditimpa. Driver C# tidak mengetahui bahwa kelas Result Anda tidak dimaksudkan untuk digunakan sebagai dokumen root dari suatu koleksi, sehingga ia menemukan bidang "id" Anda dan memetakannya ke "_id" di database.
Salah satu cara Anda dapat mengganti ini adalah dengan mengubah nama bidang di kelas Anda (seperti yang Anda temukan). Apa yang kemudian dapat Anda lakukan juga adalah menggunakan atribut [BsonElement] untuk memetakan nama bidang C# Anda (misalnya "idd") ke nama apa pun yang sebenarnya digunakan dalam database (misalnya "id"). Misalnya:
public class Result
{
[BsonElement("id")]
public int idd; // matches "id" in the database
// other fields
}
Alternatif lain adalah mengganti konvensi yang menemukan anggota "Id" dari suatu kelas untuk menekan perilaku default driver C# untuk kelas Hasil Anda. Anda dapat melakukan ini dengan mendaftarkan ConventionProfile baru untuk kelas Hasil Anda. Misalnya:
var noIdConventions= new ConventionProfile();
noIdConventions.SetIdMemberConvention(new NamedIdMemberConvention()); // no names
BsonClassMap.RegisterConventions(noIdConventions, t => t == typeof(Result));
Anda harus yakin untuk melakukan ini di awal program Anda, sebelum kelas Hasil Anda dipetakan.