public void TestCreateCollectionSetStorageEngine() { RequireServer.Check().VersionGreaterThanOrEqualTo("2.7.0"); var collection = _database.GetCollection("storage_engine_collection"); collection.Drop(); Assert.False(collection.Exists()); var storageEngineOptions = new BsonDocument { { "wiredTiger", new BsonDocument("configString", "block_compressor=zlib") } }; if (Feature.MmapV1StorageEngine.IsSupported(CoreTestConfiguration.ServerVersion)) { storageEngineOptions.Add("mmapv1", new BsonDocument()); } var options = CollectionOptions.SetStorageEngineOptions(storageEngineOptions); _database.CreateCollection(collection.Name, options); var result = _database.RunCommand("listCollections"); var resultCollection = result.Response["cursor"]["firstBatch"].AsBsonArray.Where(doc => doc["name"] == collection.Name).Single(); Assert.Equal(storageEngineOptions, resultCollection["options"]["storageEngine"]); }
public void TestCreateCollectionSetStorageEngine() { var collection = _database.GetCollection("storage_engine_collection"); collection.Drop(); Assert.IsFalse(collection.Exists()); var storageEngineOptions = new BsonDocument { { "wiredTiger", new BsonDocument("configString", "block_compressor=zlib") }, { "mmapv1", new BsonDocument() } }; var options = CollectionOptions.SetStorageEngineOptions(storageEngineOptions); _database.CreateCollection(collection.Name, options); var result = _database.RunCommand("listCollections"); var resultCollection = result.Response["cursor"]["firstBatch"].AsBsonArray.Where(doc => doc["name"] == collection.Name).Single(); Assert.AreEqual(storageEngineOptions, resultCollection["options"]["storageEngine"]); }
private static void CreateCollection(MongoCollection <BsonDocument> sourceCollection, MongoCollection <BsonDocument> targetCollection, FlexibleOptions options) { if (targetCollection.Exists()) { return; } List <string> config = new List <string> (); if (!String.IsNullOrWhiteSpace(options.Get("collection-wt-configString"))) { config.AddRange(options.Get("collection-wt-configString", "").Split(',').Select(i => i.Trim()).Where(i => !String.IsNullOrEmpty(i))); } if (options.HasOption("collection-wt-block-compressor") && valid_wt_compressors.Contains(options.Get("collection-wt-block-compressor", "invalid"))) { config.RemoveAll(i => i.StartsWith("block_compressor=", StringComparison.OrdinalIgnoreCase)); config.Add("block_compressor=" + options.Get("collection-wt-block-compressor", "").ToLowerInvariant()); } if (!String.IsNullOrWhiteSpace(options.Get("collection-wt-allocation"))) { // Mongodb version 3.0.4 defaults to: "allocation_size=4KB,internal_page_max=4KB,leaf_page_max=32KB,leaf_value_max=1MB" if (options.Get("collection-wt-allocation") == "2x") { config.RemoveAll(i => i.StartsWith("allocation_size=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("leaf_page_max=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("internal_page_max=", StringComparison.OrdinalIgnoreCase)); config.Add("allocation_size=8KB"); config.Add("leaf_page_max=64KB"); config.Add("internal_page_max=8KB"); } else if (options.Get("collection-wt-allocation") == "4x") { config.RemoveAll(i => i.StartsWith("allocation_size=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("leaf_page_max=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("internal_page_max=", StringComparison.OrdinalIgnoreCase)); config.Add("allocation_size=16KB"); config.Add("leaf_page_max=64KB"); config.Add("internal_page_max=16KB"); } else if (options.Get("collection-wt-allocation") == "8x") { config.RemoveAll(i => i.StartsWith("allocation_size=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("leaf_page_max=", StringComparison.OrdinalIgnoreCase) || i.StartsWith("internal_page_max=", StringComparison.OrdinalIgnoreCase)); config.Add("allocation_size=32KB"); config.Add("leaf_page_max=128KB"); config.Add("internal_page_max=32KB"); } } // apply configuration if (config.Count > 0) { try { var storageEngineDoc = new BsonDocument("wiredTiger", new BsonDocument("configString", String.Join(",", config))); targetCollection.Database.CreateCollection(targetCollection.Name, CollectionOptions.SetStorageEngineOptions(storageEngineDoc)); } catch (Exception ex) { NLog.LogManager.GetLogger("CreateCollection").Error(ex); } } }