With mongo some operations will return a dynamic object, usually wrapped in an expando object. To deserialize the expando object in the target class is quite simple, I actually looked in the source code to see how the driver performs this operation. If you look at the test involving the dynamic type here (https://github.com/mongodb/mongo-csharp-driver/blob/b473de06f9bf3587b3a00f52ba2678d9aed71d74/tests/MongoDB.Bson.Tests/Serialization/Serializers/ObjectSerializerTests.cs) youRead more