获取对象中任何位置的特定类型的子对象列表

时间:2017-03-09 11:29:28

标签: c# mongodb linq mongodb-.net-driver

如果我有以下结构:

    [BsonDiscriminator(RootClass = true)]
    [BsonKnownTypes(typeof(Class0), typeof(Class1), typeof(Class2))]
    public abstract class BaseClass
    {
        [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]
        public string Id;
    }

    public class Class0 : BaseClass {}

    public class Class1 : BaseClass
    {
        public Prop prop = new Prop1();
    }

    public class Class2 : BaseClass
    {
        public Prop prop1 = new Prop1();
        public Prop prop2 = new Prop2();
    }

    //

    [BsonDiscriminator(RootClass = true)]
    [BsonKnownTypes(typeof(Prop1), typeof(Prop2))]
    public abstract class Prop {}

    public class Prop1 : Prop {}

    public class Prop2 : Prop {}

我将每个Class对象中的一个插入到mongo数据库中:

enter image description here

是否可以构建一个能够以面向对象的方式返回List<Prop>(通过搜索_t值并投影子文档)的查询?

有些事情:

        IMongoCollection<BaseClass> data = db.GetCollection<BaseClass>("data");
        List<Prop> props = data.AsQueryable().OfType<Prop>();

如果以面向对象的方式无法实现,是否可以通过任何类型的mongo查询实现?

0 个答案:

没有答案