title: BsonArray to List<T> with static model
body: <p>I ran into a problem with deserializing from a BsonDocument. More precisely I could not figure out how to extract a BsonArray from a BsonDocument and turn it into a List. The BsonDocument will be served by a Database.</p>
  
  <p>The Model with corresponding attributes:</p>
  
  <pre><code>[BsonIdAttribute]
      [BsonElementAttribute("_id", Order = 1)]
      public ObjectId ID { get; set; }
  
      [BsonElementAttribute("nm", Order = 2)]
      public string Name { get; set; }
  
      [BsonElementAttribute("vc", Order = 3)]
      public List&lt;Vocab&gt; Vocabs { get; set; }
  
      [BsonElementAttribute("own", Order = 4)]
      public User Owner { get; set; }
  
      [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
      [BsonElementAttribute("cr", Order = 5)]
      public DateTime Created { get; set; }
  
  
      [DisplayFormat(DataFormatString = "{0:dd-mm-yyyy}", ApplyFormatInEditMode = true)]
      [BsonElementAttribute("md", Order = 6)]
      public DateTime Modified { get; set; }
  </code></pre>
  
  <p>and here some sample data produced by: </p>
  
  <pre><code>var vg = new VocabGroup("Unit 1", new List&lt;Vocab&gt;(), user);
  Console.WriteLine(vg.ToBsonDocument().ToString());
  
  { "_id" : ObjectId("590dafded618ce167bc571fd"), "nm" : "Unit 1", 
  "vc" :   [], 
  "own" : { "_id" : ObjectId("590dafded618ce167bc571fc"),
      "unm" : "john", 
      "nm" : "John", 
      "em" : "john@somewhere.com",
      "pwd" : "password", 
      "cr" : ISODate("2017-05-06T11:13:34.954Z") }, 
  "cr" : ISODate("2017-05-06T11:13:34.974Z"), 
  "md" : ISODate("2017-05-06T11:13:34.974Z") }
  </code></pre>
  
  <p>note the <code>"vc": []</code>
  Is there any method to reverse that process which is simply not documented or does one need to do it by hand? And if so could you please explain how to do it?</p>
  
  <p>Thank you in advance.</p>