FilterDefinition序列化在新的MongoDb驱动程序中无法正常工作

时间:2018-01-19 19:07:18

标签: mongodb

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

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]

其他类型的过滤操作和其他实体也是如此。 有关如何使序列化正常工作的任何建议吗?

1 个答案:

答案 0 :(得分:3)

尝试以下

        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);