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); }
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); }
public ExplainTests() { TestMongoContext.BuildTestData(); }