static void Main(string[] args) { MongoCRUD db = new MongoCRUD("Addresses"); Person person = new Person { FirstName = "Bob Arnold", LastName = "Johnson", DateOfBirth = new DateTime(1982, 10, 31, 0, 0, 0, DateTimeKind.Utc), PrimaryAddress = new AddressModel { StreetAddress = "111 2nd street", City = "New York", State = "NJ", Zip = "111111" }, SecondaryAddress = new AddressModel { StreetAddress = "1112 2nd street", City = "New York", State = "AA", Zip = "line" } }; db.InsertRecord("Users", person); person = new Person { FirstName = "Natalie", LastName = "Jones", DateOfBirth = new DateTime(1983, 10, 31, 0, 0, 0, DateTimeKind.Utc), PrimaryAddress = new AddressModel { StreetAddress = "2222 B street", City = "New York", State = "NJ", Zip = "111111" }, }; db.InsertRecord("Users", person); person = new Person { FirstName = "Seth", LastName = "Jones", DateOfBirth = new DateTime(1987, 10, 31, 0, 0, 0, DateTimeKind.Utc), PrimaryAddress = new AddressModel { StreetAddress = "3333 L street", City = "Town", State = "NJ", Zip = "111111" }, }; db.InsertRecord("Users", person); Console.WriteLine(); Console.WriteLine("Records one **"); Console.WriteLine(); var records = db.LoadRecords <Person>("Users"); foreach (var rec in records) { Console.WriteLine($"{rec.Id}: {rec.FirstName} {rec.LastName}"); if (rec.PrimaryAddress != null) { Console.WriteLine(rec.PrimaryAddress.StreetAddress); Console.WriteLine(rec.PrimaryAddress.State); Console.WriteLine(rec.PrimaryAddress.Zip); } Console.WriteLine(); if (rec.SecondaryAddress != null) { Console.WriteLine(rec.SecondaryAddress.StreetAddress); Console.WriteLine(rec.SecondaryAddress.State); Console.WriteLine(rec.SecondaryAddress.Zip); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("Records two **"); Console.WriteLine(); var records2 = db.LoadRecordByField <Person>("Users", "LastName", "Jones"); foreach (var rec in records2) { Console.WriteLine($"{rec.Id}: {rec.FirstName} {rec.LastName}"); if (rec.PrimaryAddress != null) { Console.WriteLine(rec.PrimaryAddress.StreetAddress); Console.WriteLine(rec.PrimaryAddress.State); Console.WriteLine(rec.PrimaryAddress.Zip); } Console.WriteLine(); if (rec.SecondaryAddress != null) { Console.WriteLine(rec.SecondaryAddress.StreetAddress); Console.WriteLine(rec.SecondaryAddress.State); Console.WriteLine(rec.SecondaryAddress.Zip); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("Records by last name **"); Console.WriteLine(); var record = db.LoadRecordByLastName <Person>("Users", "Jones"); Console.WriteLine($"{record.Id}: {record.FirstName} {record.LastName}"); Console.WriteLine(); record.FirstName = "Timothy"; db.UpsertRecord <Person>("Users", record.Id, record); Console.WriteLine(); Console.WriteLine("Records by last name after change **"); Console.WriteLine(); var record2b = db.LoadRecordByLastName <Person>("Users", "Jones"); Console.WriteLine($"{record2b.Id}: {record2b.FirstName} {record2b.LastName}"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Records from address **"); Console.WriteLine(); // It doesn't seem to work to try pulling data from a child model: var records3 = db.LoadRecordByField <AddressModel>("Users", "Zip", "111111"); foreach (var rec in records3) { Console.WriteLine("Address: " + rec.StreetAddress); } Console.WriteLine(); Console.WriteLine("Records deletion **"); Console.WriteLine(); var records4 = db.LoadRecords <Person>("Users"); foreach (var rec in records4) { db.DeleteRecord <Person>("Users", rec.Id); } Console.ReadLine(); }