从C#MongoDb启用分片
我正在使用Mongo4和最新的C#驱动程序。我的应用程序动态创建DBs和集合,我希望启用分片。我正在使用以下代码:从C#MongoDb启用分片,c#,mongodb,C#,Mongodb,我正在使用Mongo4和最新的C#驱动程序。我的应用程序动态创建DBs和集合,我希望启用分片。我正在使用以下代码: if (!ShardingEnabled) return; var database = collection.Database; var databaseName = database.DatabaseNamespace.DatabaseName; var collectionName = collection.Collection
if (!ShardingEnabled) return;
var database = collection.Database;
var databaseName = database.DatabaseNamespace.DatabaseName;
var collectionName = collection.CollectionNamespace.CollectionName;
var shardDbScript = $"{{ enableSharding: \"{databaseName}\" }}";
var shardDbResult = database.RunCommand<MongoDB.Bson.BsonDocument>(new MongoDB.Bson.BsonDocument() {
{ "eval",shardDbScript }
});
var adminDb = Client.GetDatabase("admin");
var shardScript = $"{{shardCollection: \"{databaseName}.{collectionName}\"}}";
var commandDoc = new BsonDocumentCommand<MongoDB.Bson.BsonDocument>(new MongoDB.Bson.BsonDocument()
{
{ "eval",shardScript }
}
);
var response = adminDb.RunCommand(commandDoc);
如何从C#内部启用分片?我已经找到了答案。这就是如何从c#切分数据库及其集合,请注意,切分键索引必须已经存在:
if (!ShardingEnabled) return;
var database = collection.Database;
var adminDb = Client.GetDatabase("admin");
var configDb = Client.GetDatabase("config");
//var dbs = Client.ListDatabaseNames().ToList();
var databaseName = database.DatabaseNamespace.DatabaseName;
var collectionName = collection.CollectionNamespace.CollectionName;
var shardDbResult = adminDb.RunCommand<MongoDB.Bson.BsonDocument>(new MongoDB.Bson.BsonDocument() {
{ "enableSharding",$"{databaseName}" }
});
var shardScript = $"{{shardCollection: \"{databaseName}.{collectionName}\"}}";
var commandDict = new Dictionary<string,object>();
commandDict.Add("shardCollection", $"{databaseName}.{collectionName}");
commandDict.Add("key",new Dictionary<string,object>(){{"_id","hashed"}});
var bsonDocument = new MongoDB.Bson.BsonDocument(commandDict);
var commandDoc = new BsonDocumentCommand<MongoDB.Bson.BsonDocument>(bsonDocument);
var response = adminDb.RunCommand(commandDoc);
如果(!ShardingEnabled)返回;
var database=collection.database;
var adminDb=Client.GetDatabase(“admin”);
var configDb=Client.GetDatabase(“config”);
//var dbs=Client.ListDatabaseNames().ToList();
var databaseName=database.DatabaseNamespace.databaseName;
var collectionName=collection.CollectionNamespace.collectionName;
var shardDbResult=adminDb.RunCommand(新的MongoDB.Bson.BsonDocument(){
{“enableSharding”,$“{databaseName}”
});
var shardScript=$“{{shardCollection:\”{databaseName}.{collectionName}\\“}”;
var commandDict=新字典();
Add(“shardCollection”,$”{databaseName}.{collectionName}”);
Add(“key”,newdictionary(){{{{u id”,“hash”});
var bsonDocument=新的MongoDB.Bson.bsonDocument(commandDict);
var commandDoc=新的BsonDocumentCommand(bsonDocument);
var response=adminDb.RunCommand(commandDoc);