static void Main(string[] args)
        {
            Console.WriteLine("This sample app demos how to use MongoDb.QueryHelper.");
            Console.WriteLine("There are two basic use cases:");
            Console.WriteLine("1. Explain a LINQ query (does it use an index for example?)");
            Console.WriteLine("2. Convert a LINQ query to the JavaScript code run in MongoDB");
            Console.WriteLine();
            Console.WriteLine("Find more about this on GitHub:");
            Console.WriteLine("https://github.com/mikeckennedy/mongodb-query-helper-for-dotnet");
            Console.WriteLine("By @mkennedy");
            Console.WriteLine();
            Console.WriteLine("We are working with this LINQ query:");
            Console.WriteLine();
            Console.WriteLine("var query =");
            Console.WriteLine("	from p in mongo.People");
            Console.WriteLine("	where p.Age > 20 && p.Name.Length >= 2");
            Console.WriteLine("	orderby p.Age descending");
            Console.WriteLine("	select p;");
            Console.WriteLine();

            TestMongoContext.BuildTestData();

            ToStringAQuery();
            ExplainQuery();
        }
        public async Task RunAsync()
        {
            var context = TestMongoContext.Create(@"mongodb://localhost:27017");
            await context.ClearAsync("People");

            var repo = new PeopleRepository(context);

            var entities = CreateTestEntities();
            await repo.InsertManyAsync(entities);

            await ShowRecords(repo);

            var person = await repo.FindPersonByFirstNameWithLinq("Jim");

            Console.WriteLine($"\nFound: {person.FirstName} {person.LastName}");

            var person2 = await repo.FindPersonByFirstAndLastName("Anna", "Hedges");

            Console.WriteLine($"\nFound: {person2.FirstName} {person2.LastName}");

            await TestReplacingOne(context);
            await TestReplacingOneAsUpsert(context);

            //var zipRepo = new ZipCodeRepository(context);
            //await LoadZipCodeData(zipRepo);
            //var zips = await zipRepo.LookupCityState("peoria", "il");
            //var zips = await zipRepo.LookupCity("dallas");
            //var zips = await zipRepo.LookupCityLinq("dallas");
            //var zips = await zipRepo.LookupZip("87107");
            //ShowZips(zips);
        }
Ejemplo n.º 3
0
        public void ShouldBeAbleToCreateAValidContext()
        {
            var context = new TestMongoContext();

            context.Database.ShouldNotBe(null);
            context.Users.ShouldNotBe(null);
            context.Roles.ShouldNotBe(null);
        }
        private async Task TestReplacingOneAsUpsert(TestMongoContext context)
        {
            var repo = new PeopleRepository(context);

            var id            = ObjectId.GenerateNewId().ToString();
            var replacePerson = new PersonEntity {
                Id = id, FirstName = "Dandy Andy", LastName = "Master", Age = 39
            };
            var result = await repo.ReplacePerson(replacePerson);

            ShowReplaceOneResult(result);
            await ShowRecords(repo);
        }
        private async Task TestReplacingOne(TestMongoContext context)
        {
            var repo = new PeopleRepository(context);
            var joe  = await repo.FindPersonByFirstAndLastName("Joe", "Tester");

            var needId = joe.Id;

            var replacePerson = new PersonEntity {
                Id = needId, FirstName = "Big Bob", LastName = "Blaster", Age = 29
            };
            var result = await repo.ReplacePerson(replacePerson);

            ShowReplaceOneResult(result);
            await ShowRecords(repo);
        }
        private static void ToStringAQuery()
        {
            Console.WriteLine("=== Query.ToMongoQueryText ===========================");

            var mongo = new TestMongoContext();
            var query =
                from p in mongo.People
                where p.Age > 20 && p.Name.Length >= 2
                orderby p.Age descending
                select p;

            Console.WriteLine(query.ToMongoQueryText());
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Enter to continue");
            Console.ReadKey(true);
            Console.WriteLine();
        }
        private static void ExplainQuery()
        {
            Console.WriteLine("=== Explaining queries ===========================");
            TestMongoContext.DropIndexes();
            Console.WriteLine("Without an index:");
            Console.WriteLine();
            Console.WriteLine("Enter to continue");
            Console.ReadKey(true);

            var mongo = new TestMongoContext();
            var query =
                from p in mongo.People
                where p.Age > 20 && p.Name.Length >= 2
                orderby p.Age descending
                select p;

            QueryPlan plan = query.ExplainTyped();

            PrettyPrint(plan);
            Console.WriteLine();
            Console.WriteLine("Using an index? " + (plan.CursorType == CursorType.BtreeCursor));
            Console.WriteLine();

            Console.WriteLine("Enter to continue");
            Console.ReadKey(true);

            TestMongoContext.AddIndexes();
            Console.WriteLine("With an index");
            plan = query.ExplainTyped();
            PrettyPrint(plan);
            Console.WriteLine();
            Console.WriteLine("Using an index? " + (plan.CursorType == CursorType.BtreeCursor));
            Console.WriteLine();

            Console.WriteLine("Enter to continue");
            Console.ReadKey(true);
        }
Ejemplo n.º 8
0
 public ExplainTests()
 {
     TestMongoContext.BuildTestData();
 }