static void Main() { var shards = new Dictionary<string, IDocumentStore> { {"one", new DocumentStore {Url = "http://localhost:8079"}}, {"two", new DocumentStore {Url = "http://localhost:8078"}}, {"three", new DocumentStore {Url = "http://localhost:8077"}}, }; var shardStrategy = new ShardStrategy(shards) .ShardingOn<Company>() .ShardingOn<Invoice>(x => x.CompanyId); using (var documentStore = new ShardedDocumentStore(shardStrategy).Initialize()) { new InvoicesAmountByDate().Execute(documentStore); using (var session = documentStore.OpenSession()) { var asian = new Company { Name = "Company 1" }; session.Store(asian); var middleEastern = new Company { Name = "Company 2" }; session.Store(middleEastern); var american = new Company { Name = "Company 3" }; session.Store(american); session.Store(new Invoice { CompanyId = american.Id, Amount = 3, IssuedAt = DateTime.Today.AddDays(-1) }); session.Store(new Invoice { CompanyId = asian.Id, Amount = 5, IssuedAt = DateTime.Today.AddDays(-1) }); session.Store(new Invoice { CompanyId = middleEastern.Id, Amount = 12, IssuedAt = DateTime.Today }); session.SaveChanges(); } using (var session = documentStore.OpenSession()) { var reduceResults = session.Query<InvoicesAmountByDate.ReduceResult, InvoicesAmountByDate>() .ToList(); foreach (var reduceResult in reduceResults) { string dateStr = reduceResult.IssuedAt.ToString("MMM dd, yyyy", CultureInfo.InvariantCulture); Console.WriteLine("{0}: {1}", dateStr, reduceResult.Amount); } Console.WriteLine(); } } }
static void Main() { var shards = new Dictionary <string, IDocumentStore> { { "Asia", new DocumentStore { Url = "http://localhost:8080" } }, { "Middle-East", new DocumentStore { Url = "http://localhost:8081" } }, { "America", new DocumentStore { Url = "http://localhost:8082" } }, }; var shardStrategy = new ShardStrategy(shards) .ShardingOn <Company>(x => x.Region) .ShardingOn <Invoice>(x => x.CompanyId); using (var documentStore = new ShardedDocumentStore(shardStrategy).Initialize()) { new InvoicesAmountByDate().Execute(documentStore); using (var session = documentStore.OpenSession()) { var asian = new Company { Name = "Company 1", Region = "Asia" }; session.Store(asian); var middleEastern = new Company { Name = "Company 2", Region = "Middle-East" }; session.Store(middleEastern); var american = new Company { Name = "Company 3", Region = "America" }; session.Store(american); session.Store(new Invoice { CompanyId = american.Id, Amount = 3, IssuedAt = DateTime.Today.AddDays(-1) }); session.Store(new Invoice { CompanyId = asian.Id, Amount = 5, IssuedAt = DateTime.Today.AddDays(-1) }); session.Store(new Invoice { CompanyId = middleEastern.Id, Amount = 12, IssuedAt = DateTime.Today }); session.SaveChanges(); } using (var session = documentStore.OpenSession()) { var reduceResults = session.Query <InvoicesAmountByDate.ReduceResult, InvoicesAmountByDate>() .ToList(); foreach (var reduceResult in reduceResults) { string dateStr = reduceResult.IssuedAt.ToString("MMM dd, yyyy", CultureInfo.InvariantCulture); Console.WriteLine("{0}: {1}", dateStr, reduceResult.Amount); } Console.WriteLine(); } } }