使用早于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]
其他类型的过滤操作和其他实体也是如此。 有关如何使序列化正常工作的任何建议吗?
答案 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);