使用官方C#驱动程序的MongoDB序列化对象和对象的arraylist

时间:2012-04-23 16:09:22

标签: mongodb mongodb-.net-driver

我有这个示例类:

public class Test
{
        private ObjectId _mongoID;
        private A _a = new A();
        private ArrayList _alData = new ArrayList(); // Arraylist of B objects
        #endregion

        public Test(A a, ArrayList alData)
        {
            _a = a;
            _alData = alData;
        }

        [BsonId]
        public ObjectId MongoID
        {
            get;

            set;
        }

        public A a
        {
            get
            {
                return _a;
            }
        }

        public Array dta
        {
            get 
            {
                return _alData.ToArray();
            }
        }
}

我希望得到这个结果:

{ "_id" : ObjectId("000000000000000000000000"), "_a":{A members}, "dta":[{B members}, {B members}]}

我该怎么办?

由于

1 个答案:

答案 0 :(得分:1)

此类是只读且不可变的。这是你的意图吗?如果是这样,那么以下是完成您要求的最佳方式。注意,您需要至少使用驱动程序版本1.4.1才能使用此功能,并且无法从数据库中读取此类。它只是由于属性的只读性质而持续存在。

public class Test
{
  private A _a;
  private ArrayList _alData;

  [BsonId]
  public ObjectId Id { get; set;}

  [BsonElement("_a")]
  public A A { get { return _a; } }

  [BsonElement]
  public Array dta { get { return _alData.ToArray(); } }
}