/// <summary>
 /// Returns a list of the documents matching the filter condition.
 /// </summary>
 /// <typeparam name="TDocument">The type representing a Document.</typeparam>
 /// <param name="filter">A LINQ expression filter.</param>
 /// <param name="partitionKey">An optional partition key.</param>
 public List <TDocument> GetAll <TDocument>(Expression <Func <TDocument, bool> > filter, string partitionKey = null) where TDocument : IDocument <TKey>
 {
     return(MongoDbReader.GetAll <TDocument, TKey>(filter, partitionKey));
 }
 /// <summary>
 /// Returns a list of the documents matching the filter condition.
 /// </summary>
 /// <typeparam name="TDocument">The type representing a Document.</typeparam>
 /// <typeparam name="TKey">The type of the primary key for a Document.</typeparam>
 /// <param name="condition">A mongodb filter definition.</param>
 /// <param name="findOption">A mongodb filter option.</param>
 /// <param name="partitionKey">An optional partition key.</param>
 public List <TDocument> GetAll <TDocument, TKey>(FilterDefinition <TDocument> condition, FindOptions findOption = null,
                                                  string partitionKey = null) where TDocument : IDocument <TKey> where TKey : IEquatable <TKey>
 {
     return(MongoDbReader.GetAll <TDocument, TKey>(condition, findOption, partitionKey));
 }