c#mongodb使用生成器查找派生对象

c#mongodb使用生成器查找派生对象,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我有两个集合,它们存储从同一对象继承的两个不同对象(每个对象表示一个对象) 比如: public abstract class BaseClass { public string name = "someName"; } public class FirstClass : BaseClass { ... } public class SecondClass : BaseClass { ... } var FirstCollection = mongo.GetCollection<

我有两个集合,它们存储从同一对象继承的两个不同对象(每个对象表示一个对象)

比如:

public abstract class BaseClass
{
    public string name = "someName";
}

public class FirstClass : BaseClass { ... }
public class SecondClass : BaseClass { ... }

var FirstCollection = mongo.GetCollection<FirstClass>("First");
var SecondClass =    mongo.GetCollection<SecondClass>("Second");
var filter = Builders<BaseClass>.Filter.Where(y => y.name == "someName");
var result = FirstCollection.Find(filter);
公共抽象类基类
{
公共字符串name=“someName”;
}
公共类第一类:基类{…}
公共类第二类:基类{…}
var FirstCollection=mongo.GetCollection(“第一”);
var SecondClass=mongo.GetCollection(“第二”);
现在,我有一个查询要在这两个集合上运行,只使用公共字段。 我想使用相同的查询,使用“MongoDB.Driver.Builders”

比如:

public abstract class BaseClass
{
    public string name = "someName";
}

public class FirstClass : BaseClass { ... }
public class SecondClass : BaseClass { ... }

var FirstCollection = mongo.GetCollection<FirstClass>("First");
var SecondClass =    mongo.GetCollection<SecondClass>("Second");
var filter = Builders<BaseClass>.Filter.Where(y => y.name == "someName");
var result = FirstCollection.Find(filter);
var-filter=Builders.filter.Where(y=>y.name==“someName”);
var result=FirstCollection.Find(过滤器);

你知道怎么做吗?

通过下面的设置,你可以做的和你已经做的差不多。这就是背景:

public class Context
{
    public const string DATABASE_NAME = "Test";
    public const string FIRST_COLLECTION_NAME = "FirstCollection";
    public const string SECOND_COLLECTION_NAME = "SecondCollection";

    private static readonly IMongoClient _client;
    private static readonly IMongoDatabase _database;
    static Context()
    {
        var connectionString = ConfigurationManager.AppSettings["MongoDbServer"];
        _client = new MongoClient(connectionString);
        _database = _client.GetDatabase(DATABASE_NAME);
    }

    public IMongoClient Client => _client;

    public IMongoCollection<First> FirstCollection =>
        _database.GetCollection<First>(FIRST_COLLECTION_NAME);

    public IMongoCollection<Second> SecondCollection =>
        _database.GetCollection<Second>(SECOND_COLLECTION_NAME);
}
更新

编辑后,我唯一能想到的是:

var result = context.FirstCollection.Find(x=> x.Name == "Paul").ToList();