private static void Main() { MongoInitializer = new MongoInitializer(); var user = new User { Id = MongoInitializer.SampleDb.Users.NewId() }; MongoInitializer.SampleDb.Users.InsertOne(user); MongoInitializer.SampleDb.Articles.InsertOne(new Article { AuthorId = user.Id }); var article = MongoInitializer.SampleDb.Articles.AsQueryable().First(x => x.AuthorId == user.Id); MongoInitializer.SampleDb.Articles.UpdateById(article.Id, x => x.PushEach(a => a.Comments, new List <Comment> { new Comment(), new Comment { UserId = user.Id } })); MongoInitializer.SampleDb.Articles.UpdateArrayById(article.Id, x => x.Comments, QueryExtensions.EQ <Comment>(a => a.UserId, user.Id), (builder, array) => builder.Set(array, c => c.Text, "new text")); var count = new GetUserCommentsCountCommand(MongoInitializer).ByArticle(article.Id, user.Id); Console.WriteLine(count); }
private void InitializeDatabase() { var db = Services.GetRequiredService <IMongoDatabase>(); MongoInitializer.RegisterClassMaps(); MongoInitializer.CreateSchemaAsync(db).GetAwaiter().GetResult(); }
public SnippetsRepository(IOptions <MongoConfig> config) { _config = config; _client = MongoInitializer.Init(_config.Value.ConnectionString); _database = _client.GetDatabase(DatabaseName); _collection = _database.GetCollection <SnippetDto>(CollectionName); }
public static IRepositoryProvider Initialize(SupportedPersistenceType type) { switch (type) { case SupportedPersistenceType.MongoDB: return(MongoInitializer.Initialize("mongodb://localhost:27017", "Scrummy")); default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
private static async Task <bool> InitMongoDbAsync(IMongoDatabase db) { var cursor = await db.ListCollectionNamesAsync(); var collections = await cursor.ToListAsync(); bool collectionsExist = collections.Count > 2; if (!collectionsExist) { await MongoInitializer.CreateSchemaAsync(db); } return(!collectionsExist); }
public void Test1() { MongoInitializer.Run(Settings.connectionString, Settings.dbName, Settings.assemblyName); DbConnection.SetDB(Settings.connectionString, Settings.dbName); var db = DbConnection.db; var collections = db.ListCollections().ToList <BsonDocument>().Select(e => e["name"].AsString); Assert.Contains("Model1", collections); Assert.Contains("model3", collections); Assert.Contains("ModelFooBar4", collections); }
/// <summary> /// Adds MongoDB services to the app's service collection /// </summary> public static void AddMongoDb( this IServiceCollection services, IConfigurationSection mongoSection ) { string connectionString = mongoSection.GetValue <string>(nameof(MongoOptions.ConnectionString)); if (string.IsNullOrWhiteSpace(connectionString)) { throw new ArgumentException($@"Invalid MongoDB connection string: ""{connectionString}""."); } services.Configure <MongoOptions>(mongoSection); string dbName = new ConnectionString(connectionString).DatabaseName; services.AddSingleton <IMongoClient, MongoClient>(_ => new MongoClient(connectionString)); services.AddTransient(provider => provider.GetRequiredService <IMongoClient>().GetDatabase(dbName) ); services.AddTransient <IAgencyRepo, AgencyRepo>(); services.AddTransient(provider => provider.GetRequiredService <IMongoDatabase>().GetCollection <Agency>("agencies") ); services.AddTransient <IRouteRepo, RouteRepo>(); services.AddTransient(provider => provider.GetRequiredService <IMongoDatabase>().GetCollection <Route>("routes") ); services.AddTransient <IBusStopRepo, BusStopRepo>(); services.AddTransient(provider => provider.GetRequiredService <IMongoDatabase>().GetCollection <BusStop>("bus_stops") ); services.AddTransient <IUserProfileRepo, UserProfileRepo>(); services.AddTransient(provider => provider.GetRequiredService <IMongoDatabase>().GetCollection <UserProfile>("users") ); services.AddTransient <IBusPredictionRepo, BusPredictionRepo>(); services.AddTransient(provider => provider.GetRequiredService <IMongoDatabase>().GetCollection <BusPrediction>("bus_predictions") ); MongoInitializer.RegisterClassMaps(); }
/// <summary> /// Initializes the MongoDB database. Recreates the database, if exists, and creates its schema /// </summary> private static async Task <IMongoDatabase> InitializeDatabase() { var settings = new Settings(); var connectionString = new ConnectionString(settings.ConnectionString); var clientSettings = MongoClientSettings.FromConnectionString(settings.ConnectionString); clientSettings.ClusterConfigurator = ClientSettingsClusterConfigurator; var client = new MongoClient(clientSettings); await client.DropDatabaseAsync(connectionString.DatabaseName); var db = client.GetDatabase(connectionString.DatabaseName); await MongoInitializer.CreateSchemaAsync(db); return(db); }
public static void EnsureDatabaseSchema( this IApplicationBuilder app ) { var logger = app.ApplicationServices.GetRequiredService <ILogger <Startup> >(); using (IServiceScope scope = app.ApplicationServices.CreateScope()) { var database = scope.ServiceProvider.GetRequiredService <IMongoDatabase>(); var collections = database.ListCollectionNamesAsync().Result.ToListAsync().Result; if (collections.Contains("agencies")) { logger.LogDebug("Database already has the \"agencies\" collection. Skipping."); } else { logger.LogInformation("Creating the database schema"); MongoInitializer.CreateSchemaAsync(database).GetAwaiter().GetResult(); } } }
/// <summary> /// Adds MongoDB services to the app's service collection /// </summary> public static void AddMongoDb( this IServiceCollection services, IConfigurationSection dataSection ) { string connectionString = dataSection.GetValue <string>(nameof(MongoOptions.ConnectionString)); if (string.IsNullOrWhiteSpace(connectionString)) { throw new ArgumentException($@"Invalid MongoDB connection string: ""{connectionString}""."); } services.Configure <MongoOptions>(dataSection); string dbName = new ConnectionString(connectionString).DatabaseName; services.AddSingleton <IMongoClient, MongoClient>(_ => new MongoClient(connectionString)); services.AddTransient <IMongoDatabase>(provider => provider.GetRequiredService <IMongoClient>().GetDatabase(dbName) ); services.AddTransient <IMongoCollection <UserEntity> >(_ => _.GetRequiredService <IMongoDatabase>() .GetCollection <UserEntity>("users") ); services.AddTransient <IMongoCollection <TaskList> >(_ => _.GetRequiredService <IMongoDatabase>() .GetCollection <TaskList>("task-lists") ); services.AddTransient <IMongoCollection <TaskItem> >(_ => _.GetRequiredService <IMongoDatabase>() .GetCollection <TaskItem>("task-items") ); services.AddTransient <IUserRepository, UserRepository>(); services.AddTransient <ITaskListRepository, TaskListRepository>(); services.AddTransient <ITaskItemRepository, TaskItemRepository>(); MongoInitializer.RegisterClassMaps(); }
public Startup(IConfiguration configuration) { Configuration = configuration; // DB接続確立 var dbName = "blog"; DbConnection.Connect(configuration.GetValue <string>("MONGO_CONNECTION"), dbName); // 宣言されたモデルからDBにコレクションを作る MongoInitializer.Run(DbConnection.Db, "tetsujin"); // ユーザパスワードのハッシュキー Session.Hashkey = configuration.GetValue <string>("HASHKEY"); var storageAccount = configuration.GetValue <string>("STORAGE_ACCOUNT"); var storageKey = configuration.GetValue <string>("STORAGE_KEY"); var storageUrl = configuration.GetValue <string>("STORAGE_URL"); BlobFile.SetAccountInfo(storageAccount, storageKey, storageUrl); buildTime = configuration.GetValue <string>("BUILD_TIME"); }
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddRazorPages(); // mongodb var connectionName = ISDEVELOPER ? "MongoNetWork" : "MongoAtlas"; var mongoSettings = Configuration.GetSection(connectionName).Get <MongoSettings>(); // collections services.AddSingleton <IMongoService <Book> >(MongoInitializer.Initialize <Book>(mongoSettings)); // Swagger (by ilustration) if (ISDEVELOPER) { services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Blazor Mongo API", Version = "v1" }); }); } }
private async Task SetupMongo_WithAuth() { MongoService = MongoInitializer.Initialize(DatabaseName, _schemaTypes); await Task.Delay(Delay); }
private async Task InitDbAsync() { MongoInitializer.RegisterClassMaps(); var db = Services.GetRequiredService <IMongoDatabase>(); var agencyCollection = db.GetCollection <BsonDocument>("agencies"); var routeCollection = db.GetCollection <BsonDocument>("routes"); long docsCount = await agencyCollection.CountDocumentsAsync(FilterDefinition <BsonDocument> .Empty); if (docsCount > 0) { return; } await MongoInitializer.CreateSchemaAsync(db); await agencyCollection.InsertManyAsync(new[] { // Test Agency from NextBus BsonDocument.Parse(@"{ tag: ""configdev"", created_at: new Date(), title: ""Config Stuff"", region: ""Other"", country: ""Test"", max_lat: 39.3075428, max_lon: -76.5711916, min_lat: 38.9488713, min_lon: -77.211631 }"), // Single TTC agency for Toronto BsonDocument.Parse(@"{ tag: ""ttc"", created_at: new Date(), title: ""Toronto Transit Commission"", region: ""Ontario"", country: ""Canada"", short_title: ""Toronto TTC"", max_lat: 43.9095299, max_lon: -79.12305, min_lat: 43.5918099, min_lon: -79.6499 }"), // 3 Agencies for Los Angles BsonDocument.Parse(@"{ tag: ""lametro"", created_at: new Date(), title: ""Los Angeles Metro"", region: ""California-Southern"", country: ""USA"", max_lat: 34.3261599, max_lon: -117.9134699, min_lat: 33.70685, min_lon: -118.86091 }"), BsonDocument.Parse(@"{ tag: ""lametro-rail"", created_at: new Date(), title: ""Los Angeles Rail"", region: ""California-Southern"", country: ""USA"", max_lat: 34.1684999, max_lon: -117.89164, min_lat: 33.7680699, min_lon: -118.49138 }"), BsonDocument.Parse(@"{ tag: ""pvpta"", created_at: new Date(), title: ""Palos Verdes Transit"", region: ""California-Southern"", country: ""USA"", max_lat: 33.81904, max_lon: -118.28767, min_lat: 33.7273099, min_lon: -118.42314 }"), }); await routeCollection.InsertManyAsync(new[] { // routes for TTC BsonDocument.Parse(@"{ tag : ""6"", agency : ""ttc"", created_at : new Date(), title : ""6-Bay"", max_lat : 43.6761999, min_lat : 43.64152, max_lon : -79.36538, min_lon : -79.40196, directions : [ { tag : ""6_0_6A"", title : ""South - 6 Bay towards Queens Quay and Sherbourne"", name : ""South"", stops : [ ""264"", ""4165"", ""1642"", ""2410"", ""7542"" ] }, { tag : ""6_1_6A"", title : ""North - 6a Bay towards Dupont"", name : ""North"", stops : [ ""14935"", ""4166"", ""14936"", ""14569"", ""5092"" ] } ] }"), BsonDocument.Parse(@"{ tag : ""34"", agency : ""ttc"", created_at : new Date(), title : ""34-Eglinton East"", max_lat : 43.7368499, min_lat : 43.7047599, max_lon : -79.24785, min_lon : -79.4001099, directions : [ { tag : ""34_1_34Akes"", title : ""West - 34a Eglinton East towards Eglinton Station"", name : ""West"", stops : [ ""2463"", ""317"", ""4194"", ""8550"", ""15211"" ] }, { tag : ""34_0_34C"", title : ""East - 34c Eglinton East towards Flemingdon Park (Grenoble & Spanbridge)"", name : ""East"", stops : [ ""14191"", ""303"", ""24060"", ""6665"", ""24061"" ] } ] }"), }); }
/// <summary> /// Registers mapping from entity class types to MongoDB schema /// </summary> static DatabaseFixture() { MongoInitializer.RegisterClassMaps(); }