using MongoDB.Bson; using MongoDB.Driver; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using MongoDB.Driver.Linq; namespace MongoDbHierarchicalStoring { class Program { static void Main(string[] args) { try { MongoDB.Driver.MongoClient myClient = new MongoDB.Driver.MongoClient("mongodb://localhost:27010"); var db = myClient.GetDatabase("YOUR_MONGODB_DATABASE"); var collection = db.GetCollection("TestHierarchicalData"); var queryableCollection = collection.AsQueryable(); Man obj = new Man() {Id = "Man1_671", Name = "Patrick"}; collection.InsertOneAsync(obj).Wait(); /* TEST 2: using projection seems buggy */ System.Linq.Expressions.Expression> func = mec => new Man { Id = mec.Id, Name = mec.Name }; // This line bugs using the 2.2.4 driver and works using the 2.2.1 version var listProjection = queryableCollection.Select(func).ToListAsync().Result; if (listProjection == null || listProjection.Count == 0) Console.WriteLine("With projection, list not found...."); else Console.WriteLine("Projection Worked"); Console.ReadKey(); } catch (Exception e) { Console.WriteLine("BUG: " + e.Message); Console.ReadKey(); } } } [DataContract] public class Man { [DataMember] public string Id { get; set; } [DataMember] public string Name { get; set; } } }