Tôi đã tạo một tiện ích mở rộng chuyển tiếp thẳng tới trình điều khiển MongoDB để tuần tự hóa lại tài liệu BSON bằng cách sử dụng Json.NET và giải mã hóa nó dưới dạng động. Bằng cách bao gồm lớp sau, bạn có thể chỉ cần chuyển đổi các truy vấn MongoDB của mình thành động như thế này
dynamic obj = collection.FindOneByIdAs<BsonDocument>(someObjectId).ToDynamic();
Lớp mở rộng:
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);
}
}
Đảm bảo tham chiếu Newtonsoft.Json.dll ( http://james.newtonking.com /projects/json-net.aspx )