/// <summary> /// 数据库分片 /// </summary> /// <param name="routeSvr"></param> /// <param name="shardingDB"></param> /// <returns></returns> public static CommandResult EnableSharding(MongoServer routeSvr, String shardingDB) { CommandDocument mongoCmd = new CommandDocument(); mongoCmd = new CommandDocument(); mongoCmd.Add("enablesharding", shardingDB); return ExecuteMongoCommand(mongoCmd, routeSvr); }
public static CommandResult Aggregate(BsonArray AggregateDoc) { //db.runCommand( { aggregate: "people", pipeline: [<pipeline>] } ) try { CommandDocument agg = new CommandDocument(); agg.Add(new BsonElement("aggregate", new BsonString(SystemManager.GetCurrentCollection().Name))); agg.Add(new BsonElement("pipeline", AggregateDoc)); MongoCommand Aggregate_Command = new MongoCommand(agg, PathLv.DatabaseLV); return ExecuteMongoCommand(Aggregate_Command, false); } catch (Exception ex) { SystemManager.ExceptionDeal(ex); return new CommandResult(new BsonDocument()); } }
/// <summary> /// 增加数据分片 /// </summary> /// <param name="routeSvr"></param> /// <param name="replicaSetName"></param> /// <param name="lstAddress"></param> /// <remarks>注意:有个命令可能只能用在mongos上面</remarks> /// <returns></returns> public static CommandResult AddSharding(MongoServer routeSvr, String replicaSetName, List<String> lstAddress, String Name, Decimal MaxSize) { // replset/host:port,host:port String cmdPara = replicaSetName == String.Empty ? String.Empty : (replicaSetName + "/"); foreach (String item in lstAddress) { cmdPara += item + ","; } cmdPara = cmdPara.TrimEnd(",".ToCharArray()); CommandDocument mongoCmd = new CommandDocument(); mongoCmd.Add("addshard", cmdPara); if (MaxSize != 0) { mongoCmd.Add("maxSize", (BsonValue)MaxSize); } if (Name != String.Empty) { mongoCmd.Add("name", Name); } return ExecuteMongoSvrCommand(mongoCmd, routeSvr); }
/// <summary> /// 增加数据分片 /// </summary> /// <param name="routeSvr"></param> /// <param name="replicaSetName"></param> /// <param name="shardingNames"></param> /// <returns></returns> public static CommandResult AddSharding(MongoServer routeSvr, string replicaSetName, List<string> shardingNames) { BsonDocument config = new BsonDocument(); BsonDocument cmd = new BsonDocument(); BsonDocument host = new BsonDocument(); string cmdPara = replicaSetName + "/"; foreach (var item in shardingNames) { cmdPara += SystemManager.ConfigHelperInstance.ConnectionList[item].IpAddr + ":" + SystemManager.ConfigHelperInstance.ConnectionList[item].Port.ToString() + ","; } cmdPara = cmdPara.TrimEnd(",".ToCharArray()); CommandDocument mongoCmd = new CommandDocument(); mongoCmd.Add("addshard", cmdPara); return ExecuteMongoCommand(mongoCmd, routeSvr); }
/// <summary> /// 数据集命令 /// </summary> /// <param name="Command">命令关键字</param> /// <param name="mongoCol">数据集</param> /// <param name="ExtendInfo">命令参数</param> /// <returns></returns> public static CommandResult ExecuteMongoColCommand(String Command, MongoCollection mongoCol, BsonDocument ExtendInfo) { var textSearchCommand = new CommandDocument { { Command, mongoCol.Name }, }; foreach (var item in ExtendInfo.Elements) { textSearchCommand.Add(item); } var mCommandResult = mongoCol.Database.RunCommand(textSearchCommand); RunCommandEventArgs e = new RunCommandEventArgs(); e.CommandString = textSearchCommand.ToString(); e.RunLevel = PathLv.CollectionLV; e.Result = mCommandResult; OnCommandRunComplete(e); return mCommandResult; }
//从MongoDB3.4开始,使用Zone来代替Tag了 /// <summary> /// 增加数据分片 /// </summary> /// <param name="routeSvr"></param> /// <param name="replicaSetName"></param> /// <param name="lstAddress"></param> /// <remarks>注意:有个命令可能只能用在mongos上面</remarks> /// <returns></returns> public static CommandResult AddSharding(MongoServer routeSvr, string replicaSetName, List<string> lstAddress, string name, decimal maxSize) { // replset/host:port,host:port var cmdPara = replicaSetName == string.Empty ? string.Empty : replicaSetName + "/"; foreach (var item in lstAddress) { cmdPara += item + ","; } cmdPara = cmdPara.TrimEnd(",".ToCharArray()); var mongoCmd = new CommandDocument { { "addshard", cmdPara } }; if (maxSize != 0) { mongoCmd.Add("maxSize", maxSize); } if (name != string.Empty) { mongoCmd.Add("name", name); } return ExecuteMongoSvrCommand(mongoCmd, routeSvr); }
/// <summary> /// 数据集命令 /// </summary> /// <param name="Command">命令关键字</param> /// <param name="mongoCol">数据集</param> /// <param name="ExtendInfo">命令参数</param> /// <returns></returns> public static CommandResult ExecuteMongoColCommand(String Command, MongoCollection mongoCol, BsonDocument ExtendInfo) { var textSearchCommand = new CommandDocument { { Command, mongoCol.Name }, }; foreach (var item in ExtendInfo.Elements) { textSearchCommand.Add(item); } return mongoCol.Database.RunCommand(textSearchCommand); }
/// <summary> /// 添加自定义角色 /// </summary> public static CommandResult createRole(MongoDatabase mongoDb, Role role) { var mongoCmd = new CommandDocument("createRole", role.Rolename); var privileges = new BsonArray(); privileges.AddRange(role.Privileges.Select(x => x.AsBsonDocument())); mongoCmd.Add("privileges", privileges); var roles = new BsonArray(); roles.AddRange(role.Roles.Select(x => x.AsBsonValue())); mongoCmd.Add("roles", roles); return ExecuteMongoDBCommand(mongoCmd, mongoDb); }
/// <summary> /// convertToCapped /// </summary> /// <param name="collectionName"></param> /// <param name="size"></param> /// <returns></returns> public static CommandResult convertToCapped(string collectionName, long size, MongoDatabase db) { var mongoCmd = new CommandDocument { { "convertToCapped", collectionName } }; mongoCmd.Add("size", size); return ExecuteMongoDBCommand(mongoCmd, db); }
/// <summary> /// 移除Shard /// </summary> /// <param name="routeSvr"></param> /// <param name="ShardName"></param> /// <returns></returns> public static CommandResult RemoveSharding(MongoServer routeSvr, String ShardName) { CommandDocument mongoCmd = new CommandDocument(); mongoCmd.Add("removeshard", ShardName); return ExecuteMongoSvrCommand(mongoCmd, routeSvr); }
/// <summary> /// 数据集命令 /// </summary> /// <param name="command">命令关键字</param> /// <param name="mongoCol">数据集</param> /// <param name="extendInfo">命令参数</param> /// <returns></returns> public static CommandResult ExecuteMongoColCommand(string command, MongoCollection mongoCol, BsonDocument extendInfo) { var executeCommand = new CommandDocument { {command, mongoCol.Name} }; foreach (var item in extendInfo.Elements) { executeCommand.Add(item); } var mCommandResult = mongoCol.Database.RunCommand(executeCommand); var e = new RunCommandEventArgs { CommandString = executeCommand.ToString(), RunLevel = EnumMgr.PathLevel.Collection, Result = mCommandResult }; OnCommandRunComplete(e); return mCommandResult; }
private void DoGetLogLevel() { try { var cmd = new CommandDocument("getParameter", new BsonInt32(1)); cmd.Add("logLevel", new BsonInt32(1)); var response = MongoUtilities.Create(_cnn).GetDatabase("admin").RunCommand(cmd).Response; var level = response["logLevel"].AsInt32; _control.Dispatcher.Invoke(new Action(() => { _control.LogLevel.Value = level; _control.LogLevel.ValueChanged += LogLevelValueChanged; })); } catch (Exception ex) { Utilities.LogException(ex); } }
private void DoSetLogLevel(int level) { try { var cmd = new CommandDocument("setParameter", new BsonInt32(1)); cmd.Add("logLevel", new BsonInt32(level)); var response = MongoUtilities.Create(_cnn).GetDatabase("admin").RunCommand(cmd).Response; } catch (Exception ex) { Utilities.LogException(ex); } }
/// <summary> /// Creates the begin transaction command document. /// </summary> /// <returns></returns> private CommandDocument CreateBeginTransactionCommandDocument() { var commandDocument = new CommandDocument {new BsonElement("beginTransaction", "1")}; switch (Options.Isolation) { default: //case TransactionIsolation.Mvcc: commandDocument.Add(new BsonElement("isolation", "mvcc")); break; case MongoTransactionIsolation.ReadUncommitted: commandDocument.Add(new BsonElement("isolation", "readUncommitted")); break; case MongoTransactionIsolation.Serializable: commandDocument.Add(new BsonElement("isolation", "serializable")); break; } return commandDocument; }
/// <summary> /// AddShardToZone /// </summary> /// <param name="routeSvr">服务器</param> /// <param name="shardName">Shard名称</param> /// <param name="tagName">Tag名称</param> /// <returns></returns> public static CommandResult AddShardToZone(MongoServer routeSvr, string shardName, string zone) { var mongoCmd = new CommandDocument { { "addShardToZone", shardName } }; mongoCmd.Add("zone", zone); return ExecuteMongoSvrCommand(mongoCmd, routeSvr); }
/// <summary> /// AddTagRange /// </summary> /// <param name="routeSvr">路由服务器</param> /// <param name="nameSpace">名字空间</param> /// <param name="min">最小值</param> /// <param name="max">最大值</param> /// <param name="tag">标签</param> /// <returns></returns> public static CommandResult updateZoneKeyRange(MongoServer routeSvr, string nameSpace, string FieldName, BsonValue min, BsonValue max, string zone) { var mongoCmd = new CommandDocument { { "updateZoneKeyRange", nameSpace } }; mongoCmd.Add("min", new BsonDocument(FieldName, min)); mongoCmd.Add("max", new BsonDocument(FieldName, max)); mongoCmd.Add("zone", zone); return ExecuteMongoSvrCommand(mongoCmd, routeSvr); }
/// <summary> /// 数据集命令 /// </summary> /// <param name="Command">命令关键字</param> /// <param name="mongoCol">数据集</param> /// <param name="ExtendInfo">命令参数</param> /// <returns></returns> public static CommandResult ExecuteMongoColCommand(String Command, MongoCollection mongoCol, BsonDocument ExtendInfo) { var ExecuteCommand = new CommandDocument { {Command, mongoCol.Name}, }; foreach (BsonElement item in ExtendInfo.Elements) { ExecuteCommand.Add(item); } CommandResult mCommandResult = mongoCol.Database.RunCommand(ExecuteCommand); var e = new RunCommandEventArgs { CommandString = ExecuteCommand.ToString(), RunLevel = MongoDbHelper.PathLv.CollectionLv, Result = mCommandResult }; OnCommandRunComplete(e); return mCommandResult; }
/// <summary> /// 修改用户(完全替换) /// </summary> /// <param name="user"></param> /// <param name="db"></param> /// <returns></returns> public static CommandResult updateUser(MongoUserEx user, MongoDatabase db) { var mongoCmd = new CommandDocument { { "updateUser", user.Username } }; mongoCmd.Add("pwd", user.Password); var roles = new BsonArray(); roles.AddRange(user.Roles.Select(x => x.AsBsonValue())); mongoCmd.Add("roles", roles); if (user.customData != null) { mongoCmd.Add("customData", user.customData); } return ExecuteMongoDBCommand(mongoCmd, db); }
/// <summary> /// 数据集分片 /// </summary> /// <param name="routeSvr"></param> /// <param name="sharingCollection"></param> /// <param name="shardingKey"></param> /// <returns></returns> public static CommandResult ShardCollection(MongoServer routeSvr, String sharingCollection, BsonDocument shardingKey) { CommandDocument mongoCmd = new CommandDocument(); mongoCmd.Add("shardcollection", sharingCollection); mongoCmd.Add("key", shardingKey); return ExecuteMongoCommand(mongoCmd, routeSvr); }
/// <summary> /// 重新启动 /// </summary> /// <param name="primarySvr">副本组主服务器</param> /// <param name="config">服务器信息</param> /// <remarks>这个命令C#无法正确执行</remarks> /// <returns></returns> public static CommandResult ReconfigReplsetServer(MongoServer primarySvr, BsonDocument config, Boolean force = false) { var mongoCmd = new CommandDocument { { "replSetReconfig", config } }; mongoCmd.Add("force", force); return ExecuteMongoSvrCommand(mongoCmd, primarySvr); }
public void AddToCluster(IInstanceProcess<ShardRouterSettings> router) { var address = _controller.GetAddShardAddress(); Config.Out.WriteLine("Adding shard to cluster: {0}.", address); var cmd = new CommandDocument(); cmd.Add("addShard", address); cmd.Add("name", _name); router.RunAdminCommand(cmd); }