FilterDefinition序列化在新的MongoDb驱动程序中无法按预期工作

FilterDefinition序列化在新的MongoDb驱动程序中无法按预期工作,mongodb,Mongodb,使用早于2的mongodb.net驱动程序版本,我们构建了Query对象(其api的一部分),并能够使用ToJson()方法将其序列化为mongodb查询。使用mongodb驱动程序v.2.5,我们现在有了新的FilterDefinition来构建类似的查询,但序列化不再正常工作: FilterDefinition<Person> filter = Builders<Person>.Filter.Eq(t => t.Name, "Alex"); filter.ToB

使用早于2的mongodb.net驱动程序版本,我们构建了
Query
对象(其api的一部分),并能够使用
ToJson(
)方法将其序列化为mongodb查询。使用mongodb驱动程序v.2.5,我们现在有了新的
FilterDefinition
来构建类似的查询,但序列化不再正常工作:

FilterDefinition<Person> filter = Builders<Person>.Filter.Eq(t => t.Name, "Alex");
filter.ToBsonDocument() // returns {{ "_t" : "SimpleFilterDefinition`2" }}
filter.ToJson() // returns same {{ "_t" : "SimpleFilterDefinition`2" }}
filter.ToString() // returns MongoDB.Driver.SimpleFilterDefinition`2[TestApp.Person,System.String]
filterdefinitionfilter=Builders.filter.Eq(t=>t.Name,“Alex”);
ToBsonDocument()//返回{{u t:“SimpleFilterDefinition`2}”
ToJson()//返回相同的{{u t:“SimpleFilterDefinition`2}”
filter.ToString()//返回MongoDB.Driver.SimpleFilterDefinition`2[TestApp.Person,System.String]
其他类型的筛选操作和其他实体也会发生同样的情况。 关于如何使序列化正常工作,有什么建议吗?

请尝试以下方法

        var personSerializer = new MongoClient()
            .GetDatabase("test")
            .Settings
            .SerializerRegistry
            .GetSerializer<Person>();

        var filter = Builders<Person>.Filter.Eq(x => x.FirstName, "Bob");

        var doc = filter.Render(personSerializer, BsonSerializer.SerializerRegistry);

        Console.WriteLine(doc);
var personSerializer=new MongoClient()
.GetDatabase(“测试”)
.设置
.电子注册
.GetSerializer();
var filter=Builders.filter.Eq(x=>x.FirstName,“Bob”);
var doc=filter.Render(personSerializer、BsonSerializer.SerializerRegistry);
控制台写入线(doc);

能否显示序列化前后的比较?before:
Query.EQ(t=>t.Name,“Alex”).ToJson();之后:
Builders.Filter.Eq(t=>t.Name,“Alex”).ToJson()
BsonDocumentSerializer.Instance的类型是BsonDocumentSerializer,而编译器希望它是IBsonSerializer,我不确定如何实例化它。请advise@YMC我已经更新了答案,很抱歉-类型化序列化程序将位于您正在使用的数据库中的设置对象上。现在它似乎工作正常,序列化工作正常。谢谢仍然不明白为什么前一种方法不起作用,虽然ToJson()方法看起来应该正好服务于序列化mongo查询的这个目标,但我认为它可能是mongodb驱动程序,bugToJson看起来像是一个仅针对对象的扩展方法?