查询所有具体类型的MongoDB

时间:2014-04-15 15:16:43

标签: c# mongodb polymorphism

有没有办法从包含多态类型的集合中查询所有具体类型?在我的示例中,Animal是一个抽象类。

我知道我可以使用收集。FindAll(),它将返回BsonDocuments,并使用BsonSerializer反序列化为具体类型,如下所示,但是是否有通用这样做的方式?

下面的示例有效,因为我目前在我的收藏中只有Dog个对象。

public List<Animal> Load(string collectionName, List<string> ids)
    {
        var results = new List<Animal>();
        var server = _client.GetServer();
        var database = server.GetDatabase(_databaseName);
        var collection = database.GetCollection(collectionName);

        foreach (var document in collection.FindAll())
        {
            results.Add(BsonSerializer.Deserialize<Dog>(document));
        }

        return results;            
    }

理想情况下,我希望能够说出类似这样的内容

collection.AsQueryable<Animal>().Where(c => c.Id.In(ids)).ToList();

但这不起作用,因为Animal 抽象

由于

0 个答案:

没有答案