示例#1
0
        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();
        }