Saya membuat ekstensi langsung ke driver MongoDB yang membuat serial ulang dokumen BSON menggunakan Json.NET dan menghapusnya sebagai dinamis. Dengan menyertakan kelas berikut, Anda cukup mengonversi kueri MongoDB Anda menjadi dinamis seperti ini
dynamic obj = collection.FindOneByIdAs<BsonDocument>(someObjectId).ToDynamic();
Kelas ekstensi:
public static class MongoDynamic
{
private static System.Text.RegularExpressions.Regex objectIdReplace = new System.Text.RegularExpressions.Regex(@"ObjectId\((.[a-f0-9]{24}.)\)", System.Text.RegularExpressions.RegexOptions.Compiled);
/// <summary>
/// deserializes this bson doc to a .net dynamic object
/// </summary>
/// <param name="bson">bson doc to convert to dynamic</param>
public static dynamic ToDynamic(this BsonDocument bson)
{
var json = objectIdReplace.Replace(bson.ToJson(), (s) => s.Groups[1].Value);
return Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
}
}
Pastikan untuk merujuk Newtonsoft.Json.dll (http://james.newtonking.com /projects/json-net.aspx )