public void TestFixtureSetUp() { _server = MongoServer.Create(ConnStr); if (_server.DatabaseExists(PropSetCollectionsDb)) _server.DropDatabase(PropSetCollectionsDb); _testDb = _server.GetDatabase(PropSetCollectionsDb); }
/// <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 }
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); } } }
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); }
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); }
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); }
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); } } } } }
/// <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")); } }
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); }
public IEdificeDatabase FindDatabaseByName(string dbName) { return(!server.DatabaseExists(dbName) ? null : new EdificeMongoDb(server, dbName)); }
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); }
/// <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; }
public bool DatabaseExists(string databaseName) { return(_mongoServer.DatabaseExists(databaseName)); }