static void BasicOperation() { ModelContext modelContext = ModelContext.Create(new ConfigFileConfigurationRepository(), new AppConfigConnectionStringRepository()); var filter = Builders <RestaurantDb> .Filter.Eq(r => r.Borough, "Brooklyn"); var restaurants = modelContext.Restaurants.FindSync <RestaurantDb>(filter).ToList(); var restaurant = modelContext.Restaurants.FindSync <RestaurantDb>(filter).FirstOrDefault(); Console.WriteLine(restaurant); Console.WriteLine(); ZipCodeDb firstInMassachusetts = modelContext.ZipCodes.FindSync(z => z.State == "MA").FirstOrDefault(); Console.WriteLine(firstInMassachusetts); Console.WriteLine(); ZipCodeDb firstZip = modelContext.ZipCodes.Find(z => true).FirstOrDefault(); Console.WriteLine(firstZip); RestaurantDb firstRestaurant = modelContext.Restaurants.Find(r => true).FirstOrDefault(); Console.WriteLine(); var boroughFilter = Builders <RestaurantDb> .Filter.Eq(r => r.Borough, "Brooklyn"); var cuisineFilter = Builders <RestaurantDb> .Filter.Eq(r => r.Cuisine, "Delicatessen"); var cuisineAndBoroughFilter = boroughFilter & cuisineFilter; var firstRes = modelContext.Restaurants.Find(cuisineAndBoroughFilter).First(); Console.WriteLine(firstRes); Console.WriteLine(); var firstResWithLinq = modelContext.Restaurants.Find(r => r.Borough == "Brooklyn" && r.Cuisine == "Delicatessen").Project(x => x.Name).FirstOrDefault(); Console.WriteLine(firstResWithLinq); }
public void SearchesAndInsertions() { ModelContext modelContext = ModelContext.Create(new ConfigFileConfigurationRepository(), new AppConfigConnectionStringRepository()); var boroughFilter = Builders <RestaurantDb> .Filter.Eq(r => r.Borough, "Brooklyn"); var idSortDefinition = Builders <RestaurantDb> .Sort.Ascending(r => r.Id); var restaurantsInBrooklyn = modelContext.Restaurants.Find(boroughFilter).Limit(5).Sort(idSortDefinition).ToList(); var cuisineFilter = Builders <RestaurantDb> .Filter.Eq(r => r.Cuisine, "Delicatessen"); var cuisineAndBoroughFilter = boroughFilter & cuisineFilter; var cuisineAndBoroughFilterAlternative = Builders <RestaurantDb> .Filter.And(boroughFilter, cuisineFilter); var firstRes = modelContext.Restaurants.Find(cuisineAndBoroughFilterAlternative).FirstOrDefault(); Console.WriteLine(firstRes); var restaurants = modelContext.Restaurants.FindSync <RestaurantDb>(boroughFilter).ToList(); var restaurant = modelContext.Restaurants.FindSync <RestaurantDb>(boroughFilter).FirstOrDefault(); var firstResWithLinq = modelContext.Restaurants.Find(r => r.Borough == "Brooklyn" && r.Cuisine == "Delicatessen").FirstOrDefault(); Console.WriteLine(firstResWithLinq); var arrayFilterGradeA = Builders <RestaurantDb> .Filter.ElemMatch(r => r.Grades, g => g.Grade == "A"); var arrayFilterGradeB = Builders <RestaurantDb> .Filter.ElemMatch(r => r.Grades, g => g.Grade == "B"); var arrayFilterGradeC = Builders <RestaurantDb> .Filter.ElemMatch(r => r.Grades, g => g.Grade == "C"); var arrayFilterWithAllGrades = arrayFilterGradeA & arrayFilterGradeB & arrayFilterGradeC; var firstResWithAllGrades = modelContext.Restaurants.Find(arrayFilterWithAllGrades).FirstOrDefault(); Console.WriteLine(firstResWithAllGrades); Console.WriteLine(restaurant); FindOptions findOpts = new FindOptions(); ZipCodeDb firstInMassachusetts = modelContext.ZipCodes.FindSync(z => z.State == "MA").FirstOrDefault(); Console.WriteLine(firstInMassachusetts); ZipCodeDb firstZip = modelContext.ZipCodes.Find(z => true).FirstOrDefault(); RestaurantDb firstRestaurant = modelContext.Restaurants.Find(r => true).FirstOrDefault(); List <ZipCodeDb> allZipCodes = modelContext.ZipCodes.Find(z => true).ToList(); List <RestaurantDb> allRestaurants = modelContext.Restaurants.Find(r => true).ToList(); Console.WriteLine(firstZip); Console.WriteLine(firstRestaurant); var zipSortByState = Builders <ZipCodeDb> .Sort.Ascending(z => z.State); var zipSortByName = Builders <ZipCodeDb> .Sort.Descending(z => z.City); var combinedSort = Builders <ZipCodeDb> .Sort.Combine(zipSortByState, zipSortByName); FindOptions fo = new FindOptions(); var first100zips = modelContext.ZipCodes.Find(z => true).Limit(100).Sort(combinedSort).ToList(); var zipCombinedSortAlternative = Builders <ZipCodeDb> .Sort.Ascending(z => z.State).Descending(z => z.City); var first100zipsAlternative = modelContext.ZipCodes.Find(z => true).Limit(100).Sort(zipCombinedSortAlternative).ToList(); var first100zipsLinqSolution = modelContext.ZipCodes.Find(z => true).Limit(100).SortBy(z => z.State).ThenByDescending(z => z.City).ToList(); RestaurantDb newRestaurant = new RestaurantDb(); newRestaurant.Address = new RestaurantAddressDb() { BuildingNr = "120", Coordinates = new double[] { 22.82, 99.12 }, Street = "Whatever", ZipCode = 123456 }; newRestaurant.Borough = "Somewhere in Thailand"; newRestaurant.Cuisine = "Thai"; newRestaurant.Grades = new List <RestaurantGradeDb>() { new RestaurantGradeDb() { Grade = "A", InsertedUtc = DateTime.UtcNow, Score = "7" }, new RestaurantGradeDb() { Grade = "B", InsertedUtc = DateTime.UtcNow, Score = "4" } }; newRestaurant.Id = 883738291; newRestaurant.Name = "RandomThai"; modelContext.Restaurants.InsertOne(newRestaurant); RestaurantDb newPakistaniRestaurant = new RestaurantDb(); newPakistaniRestaurant.Address = new RestaurantAddressDb() { BuildingNr = "12A", Coordinates = new double[] { 31.135, 71.24 }, Street = "New Street", ZipCode = 9877654 }; newPakistaniRestaurant.Borough = "Somewhere in Pakistan"; newPakistaniRestaurant.Cuisine = "Pakistani"; newPakistaniRestaurant.Grades = new List <RestaurantGradeDb>() { new RestaurantGradeDb() { Grade = "A", InsertedUtc = DateTime.UtcNow, Score = "9" }, new RestaurantGradeDb() { Grade = "C", InsertedUtc = DateTime.UtcNow, Score = "3" } }; newPakistaniRestaurant.Id = 457656745; newPakistaniRestaurant.Name = "PakistaniKing"; RestaurantDb newMexicanRestaurant = new RestaurantDb(); newMexicanRestaurant.Address = new RestaurantAddressDb() { BuildingNr = "2/C", Coordinates = new double[] { 24.68, -100.9 }, Street = "Mexico Street", ZipCode = 768324523 }; newMexicanRestaurant.Borough = "Somewhere in Mexico"; newMexicanRestaurant.Cuisine = "Mexican"; newMexicanRestaurant.Grades = new List <RestaurantGradeDb>() { new RestaurantGradeDb() { Grade = "B", InsertedUtc = DateTime.UtcNow, Score = "10" } }; newMexicanRestaurant.Id = 457656745; newMexicanRestaurant.Name = "MexicanKing"; List <RestaurantDb> newRestaurants = new List <RestaurantDb>() { newPakistaniRestaurant, newMexicanRestaurant }; InsertOneOptions opts = new InsertOneOptions(); modelContext.Restaurants.InsertMany(newRestaurants); Console.ReadKey(); }