public void TestFixtureSetUp()
 {
     _server = MongoServer.Create(ConnStr);
     if (_server.DatabaseExists(PropSetCollectionsDb))
         _server.DropDatabase(PropSetCollectionsDb);
     _testDb = _server.GetDatabase(PropSetCollectionsDb);
 }
Exemple #2
0
 /// <summary>
 ///     获得Shard情报
 /// </summary>
 /// <returns></returns>
 public static Dictionary<string, string> GetShardInfo(MongoServer server, string key)
 {
     var shardInfo = new Dictionary<string, string>();
     if (!server.DatabaseExists(ConstMgr.DatabaseNameConfig)) return shardInfo;
     var configdb = server.GetDatabase(ConstMgr.DatabaseNameConfig);
     if (!configdb.CollectionExists("shards")) return shardInfo;
     foreach (var item in configdb.GetCollection("shards").FindAll().ToList())
     {
         shardInfo.Add(item.GetElement(ConstMgr.KeyId).Value.ToString(),
             item.GetElement(key).Value.ToString());
     }
     return shardInfo;
 }
        public void FixtureSetup()
        {
            _mongoServer = MongoServer.Create(ConfigurationManager.ConnectionStrings["mongodb_" + _testDatabaseName].ConnectionString);

            var mongoAdminDatbase = _mongoServer.GetDatabase("admin");

            mongoAdminDatbase.RunCommand(new CommandDocument(new Dictionary<string, object>
                                                                 {
                                                                     {"copydb", "1"},
                                                                     {"fromdb", "web"},
                                                                     {"todb", _testDatabaseName},
                                                                 }));

            Assert.That(_mongoServer.DatabaseExists(_testDatabaseName), Is.True);

            // TODO: Setup RavenDB
        }
Exemple #4
0
        public static void Delete(string databaseName, string tableName, string key)
        {
            List <KeyValue> list   = new List <KeyValue>();
            MongoServer     server = Utilities.CreateMongoConnection();

            if (server.DatabaseExists(databaseName))
            {
                var database = server.GetDatabase(databaseName);
                if (database.CollectionExists(tableName))
                {
                    var collection = database.GetCollection(tableName);
                    var query      = Query <KeyValue> .EQ(x => x.key, key);

                    collection.Remove(query);
                }
            }
        }
Exemple #5
0
        public static List <KeyValue> GetAllTableKeysValues(string databaseName, string tableName)
        {
            List <KeyValue> list   = new List <KeyValue>();
            MongoServer     server = Utilities.CreateMongoConnection();

            if (server.DatabaseExists(databaseName))
            {
                var database = server.GetDatabase(databaseName);
                if (database.CollectionExists(tableName))
                {
                    var collection = database.GetCollection(tableName);
                    list = (from p in collection.AsQueryable <KeyValue>()
                            select p).ToList();
                }
            }
            return(list);
        }
        public void FixtureSetup()
        {
            _mongoServer = MongoServer.Create(ConfigurationManager.ConnectionStrings["mongodb_" + _testDatabaseName].ConnectionString);

            var mongoAdminDatbase = _mongoServer.GetDatabase("admin");

            mongoAdminDatbase.RunCommand(new CommandDocument(new Dictionary <string, object>
            {
                { "copydb", "1" },
                { "fromdb", "web" },
                { "todb", _testDatabaseName },
            }));

            Assert.That(_mongoServer.DatabaseExists(_testDatabaseName), Is.True);

            // TODO: Setup RavenDB
        }
        /// <summary>
        ///     获得Shard情报
        /// </summary>
        /// <returns></returns>
        public static Dictionary <String, String> GetShardInfo(MongoServer server, String Key)
        {
            var ShardInfo = new Dictionary <String, String>();

            if (server.DatabaseExists(DATABASE_NAME_CONFIG))
            {
                MongoDatabase configdb = server.GetDatabase(DATABASE_NAME_CONFIG);
                if (configdb.CollectionExists("shards"))
                {
                    foreach (BsonDocument item in configdb.GetCollection("shards").FindAll().ToList())
                    {
                        ShardInfo.Add(item.GetElement(KEY_ID).Value.ToString(), item.GetElement(Key).Value.ToString());
                    }
                }
            }
            return(ShardInfo);
        }
Exemple #8
0
        private void connectBtn_Click(object sender, EventArgs e)
        {
            if (dbNameTxtBox.Text == "")
            {
                MessageBox.Show("Please enter database name!");
                dbStatusLbl.Text = "Connection error!";
                return;
            }

            if (collectionNameTxtBox.Text == "")
            {
                MessageBox.Show("Please enter collection name!");
                dbStatusLbl.Text = "Connection error!";
                return;
            }

            try
            {
                System.Diagnostics.Process.Start("mongod.exe"); //Preparing
                server = MongoServer.Create(connectionString);  //Connect to server
                if (server.DatabaseExists(dbNameTxtBox.Text))
                {
                    database = server.GetDatabase(dbNameTxtBox.Text); //Get database that name is taken from user
                    if (database.CollectionExists(collectionNameTxtBox.Text))
                    {
                        collection        = database.GetCollection <BsonDocument>(collectionNameTxtBox.Text);
                        dbStatusLbl.Text  = "Mongodb is ready.";
                        groupBox2.Enabled = true;
                    }
                    else
                    {
                        dbStatusLbl.Text = "Collection does not exist.";
                    }
                }
                else
                {
                    dbStatusLbl.Text = "Database does not exist.";
                }
            }
            catch (Exception)
            {
                dbStatusLbl.Text = "Connection error!";
            }
        }
        /// <summary>
        ///     执行MongoCommand
        /// </summary>
        /// <param name="mCommandDocument">命令Doc</param>
        /// <param name="mongoSvr">目标服务器</param>
        /// <returns></returns>
        public static CommandResult ExecuteMongoSvrCommand(CommandDocument mCommandDocument, MongoServer mongoSvr)
        {
            CommandResult mCommandResult = null;

            try
            {
                if (mongoSvr.DatabaseExists(ConstMgr.DatabaseNameAdmin))
                {
                    //Repl的时候,会发生超时问题
                    mCommandResult = mongoSvr.GetDatabase(ConstMgr.DatabaseNameAdmin).RunCommand(mCommandDocument);
                }
                else
                {
                    //Replset的时候,没有Admin数据库
                    BsonDocument AdminDatabaseNotFound = new BsonDocument
                    {
                        { "errmsg", "Admin Database Not Found" }
                    };
                    mCommandResult = new CommandResult(AdminDatabaseNotFound);
                }
            }
            catch (MongoCommandException ex)
            {
                mCommandResult = new CommandResult(ex.Result);
            }
            catch (TimeoutException)
            {
                BsonDocument TimeOutDocument = new BsonDocument
                {
                    { "errmsg", "TimeoutException" }
                };
                mCommandResult = new CommandResult(TimeOutDocument);
            }
            var e = new RunCommandEventArgs
            {
                CommandString = mCommandDocument.ToString(),
                RunLevel      = EnumMgr.PathLevel.Instance,
                Result        = mCommandResult
            };

            OnCommandRunComplete(e);
            return(mCommandResult);
        }
Exemple #10
0
        public static bool CheckRestriction(string databaseName, string tableName, string text)
        {
            List <KeyValue> list   = new List <KeyValue>();
            MongoServer     server = Utilities.CreateMongoConnection();

            if (server.DatabaseExists(databaseName))
            {
                var database = server.GetDatabase(databaseName);
                if (database.CollectionExists(tableName))
                {
                    var collection = database.GetCollection(tableName);
                    if (collection.FindAs <KeyValue>(Query.EQ("key", text)).Count() == 0)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Exemple #11
0
        public static void DeleteKeys(string databaseName, string tableName, string type, string key)
        {
            List <KeyValue> list   = new List <KeyValue>();
            MongoServer     server = Utilities.CreateMongoConnection();

            if (server.DatabaseExists(databaseName))
            {
                var database = server.GetDatabase(databaseName);
                tableName += type;
                if (database.CollectionExists(tableName))
                {
                    var         collection = database.GetCollection(tableName);
                    KeyValue    kvelem     = null;
                    IMongoQuery query      = Query <KeyValue> .EQ(x => x.value, key);

                    if (type == "uk")
                    {
                        kvelem = collection.AsQueryable <KeyValue>().FirstOrDefault(x => x.value == key);
                    }
                    else
                    {
                        query = Query <KeyValue> .Where(x => x.value.Contains(key));

                        kvelem = collection.AsQueryable <KeyValue>().FirstOrDefault(x => x.value.Contains(key));
                    }
                    if (kvelem != null)
                    {
                        kvelem.value = Utilities.RemoveValueFromString(kvelem.value, key);
                        if (kvelem.value.Length > 0)
                        {
                            var update = Update <KeyValue> .Set(x => x.value, kvelem.value);

                            collection.Update(query, update);
                        }
                        else
                        {
                            collection.Remove(query);
                        }
                    }
                }
            }
        }
Exemple #12
0
        /// <summary>
        ///     获得Shard情报
        /// </summary>
        /// <returns></returns>
        public static Dictionary <string, string> GetShardInfo(MongoServer server, string key)
        {
            var shardInfo = new Dictionary <string, string>();

            if (!server.DatabaseExists(ConstMgr.DatabaseNameConfig))
            {
                return(shardInfo);
            }
            var configdb = server.GetDatabase(ConstMgr.DatabaseNameConfig);

            if (!configdb.CollectionExists("shards"))
            {
                return(shardInfo);
            }
            foreach (var item in configdb.GetCollection("shards").FindAll().ToList())
            {
                shardInfo.Add(item.GetElement(ConstMgr.KeyId).Value.ToString(),
                              item.GetElement(key).Value.ToString());
            }
            return(shardInfo);
        }
        public static void CreateDataBase(string serverConnectionString, string DbName)
        {
            MongoClient client = new MongoClient(serverConnectionString);
            string      msg;
            MongoServer mongoserver = client.GetServer();

            if (mongoserver.DatabaseExists(DbName))
            {
                throw new Exception("Database Already Exist");
            }
            else if (!mongoserver.IsDatabaseNameValid(DbName, out msg))
            {
                throw new Exception("Database Name Not Valid.\n" + msg);
            }
            else
            {
                var database   = client.GetDatabase(DbName);
                var collection = database.GetCollection <BsonDocument>("PlaceHolder");
                collection.InsertOne(new BsonDocument("PlaceHolder", "This Is Just Place Holder For Your Db"));
            }
        }
Exemple #14
0
        public static Table CheckForReferencesFK(string databaseName, string tableName, string value)
        {
            var      alldata = DataLayer.Configuration.GetAllData();
            var      columns = DataLayer.Configuration.GetTableColumns(databaseName, tableName);
            Database db      = alldata.Where(x => x.DatabaseName == databaseName).First();

            if (db != null)
            {
                var currentTable = db.Tables.Where(x => x.TableName == tableName).First();
                if (currentTable != null)
                {
                    PrimaryKey pkey = currentTable.PrimaryKey.FirstOrDefault();
                    foreach (Table table in db.Tables)
                    {
                        ForeignKey fkey = table.ForeignKey.FirstOrDefault();
                        if (fkey != null)
                        {
                            if (currentTable.TableName == fkey.RefTable && currentTable.Columns.Count(x => x.ColumnName == fkey.RefAttribute) > 0)
                            {
                                MongoServer server = Utilities.CreateMongoConnection();
                                if (server.DatabaseExists(databaseName))
                                {
                                    var database = server.GetDatabase(databaseName);
                                    if (database.CollectionExists(table.TableName + "fk"))
                                    {
                                        var collection = database.GetCollection(table.TableName + "fk");
                                        if (collection.FindAs <KeyValue>(Query.EQ("key", value)).Count() > 0)
                                        {
                                            return(currentTable);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(null);
        }
Exemple #15
0
 public IEdificeDatabase FindDatabaseByName(string dbName)
 {
     return(!server.DatabaseExists(dbName) ?
            null :
            new EdificeMongoDb(server, dbName));
 }
Exemple #16
0
        public static List <string> GetKeyValuesIndexJoin(string databaseName, List <KeyValue> selectedColumns, bool singletable, List <SelectionOperator> operators)
        {
            List <KeyValue> list   = new List <KeyValue>();
            List <string>   result = new List <string>();
            MongoServer     server = Utilities.CreateMongoConnection();

            if (selectedColumns.Count > 0)
            {
                if (server.DatabaseExists(databaseName))
                {
                    var database = server.GetDatabase(databaseName);
                    if (singletable)
                    {
                        string tabcol = selectedColumns.FirstOrDefault().key.Split('.')[0];
                        var    liste  = new List <string>();
                        liste.Add(tabcol);
                        var tablecolumnindex = Utilities.GetAllColumnIndex(databaseName, liste);
                        if (database.CollectionExists(tabcol))
                        {
                            var collection = database.GetCollection(tabcol);
                            var keyvalues  = (from p in collection.AsQueryable <KeyValue>()
                                              select p).ToList();


                            foreach (KeyValue kv in keyvalues)
                            {
                                string str = kv.key + "#" + kv.value;
                                result.Add(str);
                            }
                        }
                        var aux = new List <string>();
                        result.ForEach(x => { aux.Add(x); });
                        if (operators != null)
                        {
                            foreach (var op in operators)
                            {
                                int index = tablecolumnindex.IndexOf(tablecolumnindex.FirstOrDefault(x => x.key == op.TabCol));;
                                foreach (var item in result)
                                {
                                    string[] s = item.Split('#');
                                    if (!Utilities.Compare(s[index], op.Operator, op.Value, op.Type))
                                    {
                                        aux.Remove(item);
                                    }
                                }
                            }
                        }
                        result = new List <string>();
                        foreach (var item in aux)
                        {
                            var res = Utilities.GetColumnValues(selectedColumns, item);
                            if (res != string.Empty)
                            {
                                result.Add(res);
                            }
                        }
                        return(result.Distinct().ToList());
                    }
                    else
                    {
                        //This is the part with the Join operation
                        List <string> selectedtables = new List <string>();
                        foreach (KeyValue str in selectedColumns)
                        {
                            selectedtables.Add(str.key.Split('.')[0]);
                        }
                        selectedtables = selectedtables.Distinct().ToList();
                        foreach (var item in selectedtables)
                        {
                            string tableName = item;
                            Table  tablefk   = DataLayer.DataAccess.GetReferencedTable(databaseName, item);
                            if (tablefk != null)
                            {
                                if (database.CollectionExists(tablefk.TableName + "fk"))
                                {
                                    var collection = database.GetCollection(tablefk.TableName + "fk");
                                    var query      = (from p in collection.AsQueryable <KeyValue>()
                                                      select p).ToList();
                                    if (query.Count > 0)
                                    {
                                        if (database.CollectionExists(item))
                                        {
                                            var col2        = database.GetCollection(item);
                                            var tablevalues = new List <string>();
                                            foreach (var itm in query)
                                            {
                                                var query2 = (from p in col2.AsQueryable <KeyValue>()
                                                              where p.key == itm.key
                                                              select p).FirstOrDefault();
                                                StringBuilder value = new StringBuilder();
                                                if (query2 != null)
                                                {
                                                    value.Append(query2.key + "#" + query2.value);
                                                }

                                                var splitvalue  = itm.value.Split('#');
                                                var collection2 = database.GetCollection(tablefk.TableName);
                                                foreach (var s in splitvalue)
                                                {
                                                    var query3 = (from p in collection2.AsQueryable <KeyValue>()
                                                                  where p.key == s
                                                                  select p.key + "#" + p.value).FirstOrDefault();
                                                    if (query3 != null)
                                                    {
                                                        value.Append("#" + query3);
                                                    }
                                                    tablevalues.Add(value.ToString());
                                                    value.Clear();
                                                    if (query2 != null)
                                                    {
                                                        value.Append(query2.key + "#" + query2.value);
                                                    }
                                                    //tablevalues.Add(itm.key + "#" + itm.value + "#" + query3);
                                                }
                                            }


                                            var tablecolumnsindex = Utilities.GetAllColumnIndex(databaseName, selectedtables);
                                            var aux = new List <string>();
                                            tablevalues.ForEach(x => { aux.Add(x); });
                                            if (operators != null)
                                            {
                                                foreach (var op in operators)
                                                {
                                                    string val   = tablecolumnsindex.Where(x => x.key == op.TabCol).FirstOrDefault().value;
                                                    int    index = 0;
                                                    int.TryParse(val, out index);
                                                    foreach (var value in tablevalues)
                                                    {
                                                        string[] s = value.Split('#');
                                                        if (index >= s.Length)
                                                        {
                                                            aux.Remove(value);
                                                        }
                                                        else
                                                        if (!Utilities.Compare(s[index], op.Operator, op.Value, op.Type))
                                                        {
                                                            aux.Remove(value);
                                                        }
                                                    }
                                                }
                                            }
                                            tablevalues = new List <string>();
                                            List <string> indexes = new List <string>();
                                            foreach (var selectedKeyValue in selectedColumns)
                                            {
                                                var index = tablecolumnsindex.Where(x => x.key == selectedKeyValue.key).FirstOrDefault().value;
                                                indexes.Add(index);
                                            }

                                            foreach (string str in aux)
                                            {
                                                string[] s      = str.Split('#');
                                                string   values = string.Empty;
                                                for (int i = 0; i < indexes.Count; i++)
                                                {
                                                    int index = 0;
                                                    int.TryParse(indexes[i], out index);
                                                    if (index < s.Count())
                                                    {
                                                        values += s[index] + "#";
                                                    }
                                                    else
                                                    {
                                                        values += "NULL" + "#";
                                                    }
                                                }
                                                values = values.Remove(values.Length - 1, 1);
                                                tablevalues.Add(values);
                                            }
                                            return(tablevalues.Distinct().ToList());
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }
Exemple #17
0
 /// <summary>
 ///     执行MongoCommand
 /// </summary>
 /// <param name="mCommandDocument">命令Doc</param>
 /// <param name="mongoSvr">目标服务器</param>
 /// <returns></returns>
 public static CommandResult ExecuteMongoSvrCommand(CommandDocument mCommandDocument, MongoServer mongoSvr)
 {
     CommandResult mCommandResult = null;
     try
     {
         if (mongoSvr.DatabaseExists(ConstMgr.DatabaseNameAdmin))
         {
             //Repl的时候,会发生超时问题
             mCommandResult = mongoSvr.GetDatabase(ConstMgr.DatabaseNameAdmin).RunCommand(mCommandDocument);
         }
         else
         {
             //Replset的时候,没有Admin数据库
             BsonDocument AdminDatabaseNotFound = new BsonDocument();
             AdminDatabaseNotFound.Add("errmsg", "Admin Database Not Found");
             mCommandResult = new CommandResult(AdminDatabaseNotFound);
         }
     }
     catch (MongoCommandException ex)
     {
         mCommandResult = new CommandResult(ex.Result);
     }
     catch (TimeoutException)
     {
         BsonDocument TimeOutDocument = new BsonDocument();
         TimeOutDocument.Add("errmsg", "TimeoutException");
         mCommandResult = new CommandResult(TimeOutDocument);
     }
     var e = new RunCommandEventArgs
     {
         CommandString = mCommandDocument.ToString(),
         RunLevel = EnumMgr.PathLevel.Instance,
         Result = mCommandResult
     };
     OnCommandRunComplete(e);
     return mCommandResult;
 }
        /// <summary>
        /// 数据库操作
        /// </summary>
        /// <param name="strObjTag"></param>
        /// <param name="dbName"></param>
        /// <param name="func"></param>
        /// <param name="tr"></param>
        /// <returns></returns>
        public static String DataBaseOpration(String strObjTag, String dbName, Oprcode func, TreeNode tr)
        {
            String        rtnResult  = String.Empty;
            MongoServer   mongoSvr   = GetMongoServerBySvrPath(strObjTag);
            String        strSvrPath = SystemManager.GetTagData(strObjTag);
            String        svrKey     = strSvrPath.Split("/".ToCharArray())[(int)PathLv.InstanceLV];
            CommandResult result     = new CommandResult(new BsonDocument());

            if (mongoSvr != null)
            {
                switch (func)
                {
                case Oprcode.Create:
                    if (!mongoSvr.DatabaseExists(dbName))
                    {
                        //从权限上看,clusterAdmin是必须的
                        //但是能够建立数据库,不表示能够看到里面的内容!
                        //dbAdmin可以访问数据库。
                        //clusterAdmin能创建数据库但是不能访问数据库。
                        try
                        {
                            mongoSvr.GetDatabase(dbName);
                            tr.Nodes.Add(FillDataBaseInfoToTreeNode(dbName, mongoSvr, svrKey + "/" + svrKey));
                        }
                        catch (Exception ex)
                        {
                            //如果使用没有dbAdmin权限的clusterAdmin。。。。
                            SystemManager.ExceptionDeal(ex);
                        }
                    }
                    break;

                case Oprcode.Drop:
                    if (mongoSvr.DatabaseExists(dbName))
                    {
                        result = mongoSvr.DropDatabase(dbName);
                        if (tr != null)
                        {
                            tr.TreeView.Nodes.Remove(tr);
                        }
                        if (!result.Response.Contains("err"))
                        {
                            return(String.Empty);
                        }
                        else
                        {
                            return(result.Response["err"].ToString());
                        }
                    }
                    break;

                case Oprcode.Repair:
                    ///其实Repair的入口不在这个方法里面
                    MongoDBHelper.ExecuteMongoDBCommand(MongoDBHelper.repairDatabase_Command, SystemManager.GetCurrentDataBase());
                    break;

                default:
                    break;
                }
            }
            return(rtnResult);
        }
 /// <summary>
 ///     获得Shard情报
 /// </summary>
 /// <returns></returns>
 public static Dictionary<String, String> GetShardInfo(MongoServer server, String Key)
 {
     var ShardInfo = new Dictionary<String, String>();
     if (server.DatabaseExists(DATABASE_NAME_CONFIG))
     {
         MongoDatabase configdb = server.GetDatabase(DATABASE_NAME_CONFIG);
         if (configdb.CollectionExists("shards"))
         {
             foreach (BsonDocument item in configdb.GetCollection("shards").FindAll().ToList())
             {
                 ShardInfo.Add(item.GetElement(KEY_ID).Value.ToString(), item.GetElement(Key).Value.ToString());
             }
         }
     }
     return ShardInfo;
 }
Exemple #20
0
 public bool DatabaseExists(string databaseName)
 {
     return(_mongoServer.DatabaseExists(databaseName));
 }