/// <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;
 }
Example #6
0
        //从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);
 }
Example #8
0
 /// <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);
 }
Example #9
0
 /// <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);
 }
Example #11
0
 /// <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;
 }
Example #12
0
 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);
     }
 }
Example #13
0
 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;
		}
Example #15
0
 /// <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);
 }
Example #16
0
 /// <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;
 }
Example #18
0
 /// <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);
 }
Example #20
0
 /// <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);
 }