通过界面在mongo中进行过滤

时间:2018-10-04 11:45:26

标签: c# mongodb mongodb-.net-driver mongodb-csharp-2.0

我有一个mongo集合,我想输入一个接口。它应该能够包含多个具体类型,所有这些类型都实现此接口。但是,在查询是否使用接口时,它告诉我找不到序列化信息。示例代码:

var collection = database.GetCollection<ITestInterface>("TestCollection2");
var filter = Builders<ITestInterface>.Filter.Eq(x => x.Number, 42);
var items = collection.FindSync(filter);

这将导致出现异常消息:“无法确定x => x.Number的序列化信息。”

是否可以告诉驱动程序如何在接口上序列化内容?我可以找到一种变通方法,要求所有类型都具有相同的baseClass,然后可以执行以下操作:

var filter = Builders<BaseClass>.Filter.Eq(x => x.Number, 42);
var items = collection.OfType<BaseClass>().FindSync(filter);

但是,我宁愿不这样做,而是让驱动程序能够找到接口所需的序列化信息。

那么有什么方法可以告诉驱动程序如何序列化接口上的内容或以其他方式使第一段代码起作用?

0 个答案:

没有答案