public static void Main(string[] args) { // http://stackoverflow.com/questions/6499268/mongodb-connection-refused // I ran into the same issue because I upgraded my mongo using brew. // To fix this issue open the config file /etc/mongod.conf // and comment out the "bind_ip" property. // http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/ // mongodb://server2/?ssl=true // mongodb://[username:password@]hostname[:port][/[database][?options]] // string connectionString = "mongodb://localhost:27020/mydb"; string connectionString = "mongodb://localhost:27017/mydb"; // string connectionString = "mongodb://localhost:27017"; MongoServer server = new MongoClient(connectionString).GetServer(); System.Collections.Generic.List<string> ls = (System.Collections.Generic.List<string>) server.GetDatabaseNames (); System.Console.WriteLine (ls.Count); System.Console.WriteLine ("Hello World!"); }
/// <summary> /// 获取实例节点 /// </summary> /// <param name="mongoConnKey"></param> /// <param name="config">由于是结构体,必须ref</param> /// <param name="mongoConn"></param> /// <param name="mMasterServerInstace"></param> /// <param name="mServer"></param> /// <param name="UserList"></param> /// <returns></returns> private static TreeNode GetInstanceNode(String mongoConnKey, ref ConfigHelper.MongoConnectionConfig config, MongoServer mongoConn, MongoServerInstance mMasterServerInstace, MongoServer mServer, EachDatabaseUser UserList) { Boolean isReplsetMasterServer = false; //无论如何,都改为主要服务器读优先 if (mMasterServerInstace == null) { isReplsetMasterServer = true; } TreeNode SvrInstanceNode = new TreeNode(); String ConnSvrKey; if (isReplsetMasterServer) { ConnSvrKey = mongoConnKey + "/" + mongoConnKey; } else { ConnSvrKey = mongoConnKey + "/" + mMasterServerInstace.Address.ToString().Replace(":", "@"); } SvrInstanceNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.WebServer; SvrInstanceNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.WebServer; if (isReplsetMasterServer) { SvrInstanceNode.Text = "Connection"; } else { SvrInstanceNode.Text = "Server[" + mMasterServerInstace.Address.ToString() + "]"; } if ((!String.IsNullOrEmpty(config.UserName)) & (!String.IsNullOrEmpty(config.Password))) { //是否是认证模式,应该取决于服务器! config.AuthMode = true; } //获取ReadOnly config.IsReadOnly = false; List<String> databaseNameList = new List<String>(); if (!String.IsNullOrEmpty(config.DataBaseName)) { //单数据库模式 TreeNode mongoSingleDBNode; if (isReplsetMasterServer) { mongoSingleDBNode = FillDataBaseInfoToTreeNode(config.DataBaseName, mServer, mongoConnKey + "/" + mongoConnKey); } else { mongoSingleDBNode = FillDataBaseInfoToTreeNode(config.DataBaseName, mServer, mongoConnKey + "/" + mMasterServerInstace.Address.ToString()); } mongoSingleDBNode.Tag = SINGLE_DATABASE_TAG + ":" + ConnSvrKey + "/" + config.DataBaseName; mongoSingleDBNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; mongoSingleDBNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; SvrInstanceNode.Nodes.Add(mongoSingleDBNode); SvrInstanceNode.Tag = SINGLE_DB_SERVER_TAG + ":" + ConnSvrKey; ///获取User信息 if (config.AuthMode) { try { ///尝试添加用户信息 UserList.AddUser(mongoConn.GetDatabase(config.DataBaseName), config.UserName); } catch (Exception) { //可能出现没有权限的问题,这里就认为无法取得权限 } } } else { MongoServer InstantSrv; if (isReplsetMasterServer) { InstantSrv = mServer; databaseNameList = mServer.GetDatabaseNames().ToList<String>(); } else { MongoClientSettings setting = CreateMongoClientSettingsByConfig(ref config); setting.ConnectionMode = ConnectionMode.Direct; //When Replset Case,Application need to read admin DB information //if Primary,there will be exception setting.ReadPreference = ReadPreference.PrimaryPreferred; setting.Server = mMasterServerInstace.Address; InstantSrv = new MongoClient(setting).GetServer(); databaseNameList = InstantSrv.GetDatabaseNames().ToList<String>(); } foreach (String strDBName in databaseNameList) { TreeNode mongoDBNode; try { mongoDBNode = FillDataBaseInfoToTreeNode(strDBName, InstantSrv, ConnSvrKey); mongoDBNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; mongoDBNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; SvrInstanceNode.Nodes.Add(mongoDBNode); if (config.AuthMode) { try { ///尝试添加用户信息 UserList.AddUser(mongoConn.GetDatabase(strDBName), config.UserName); } catch (Exception) { //可能出现没有权限的问题,这里就认为无法取得权限 } } } catch (Exception ex) { SystemManager.ExceptionDeal(ex, strDBName + "Exception", strDBName + "Exception"); mongoDBNode = new TreeNode(strDBName + " (Exception)"); mongoDBNode.ImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; mongoDBNode.SelectedImageIndex = (int)GetSystemIcon.MainTreeImageType.Database; SvrInstanceNode.Nodes.Add(mongoDBNode); } } if (isReplsetMasterServer) { SvrInstanceNode.Tag = SERVER_TAG + ":" + mongoConnKey + "/" + mongoConnKey; } else { if (mongoConn.ReplicaSetName != null) { SvrInstanceNode.Tag = SERVER_REPLSET_MEMBER_TAG + ":" + mongoConnKey + "/" + mMasterServerInstace.Address.ToString().Replace(":", "@"); } } } if (_mongoInstanceLst.ContainsKey(ConnSvrKey)) { _mongoInstanceLst.Remove(ConnSvrKey); } if (!isReplsetMasterServer) { _mongoInstanceLst.Add(ConnSvrKey, mMasterServerInstace); } return SvrInstanceNode; }
public void MongoDb_Supports_Basic_Crud_Operations() { const string connectionString = "mongodb://localhost"; if (!MongoDbRepositoryManager.ServerIsRunning(connectionString)) { AssertIgnores.MongoServerIsNotRunning(); } var server = new MongoClient(connectionString).GetServer(); var databaseNames = server.GetDatabaseNames(); foreach (var db in databaseNames) { server.DropDatabase(db); } var database = server.GetDatabase("Order"); var orders = database.GetCollection<Order>("Order"); Console.WriteLine("* CREATE *"); var create = new Order { Name = "Big sale" }; database.GetCollection<Order>("Order").Insert(create); foreach (var order in database.GetCollection<Order>("Order").AsQueryable()) { Console.WriteLine(order.Name + ", " + order.OrderId); } Console.WriteLine("* READ *"); var read = orders.AsQueryable().FirstOrDefault(e => e.OrderId == create.OrderId); read.Name.ShouldEqual(create.Name); Console.WriteLine("* UPDATE *"); read.Name = "Really big sale"; database.GetCollection<Order>("Order").Save(read); foreach (var order in database.GetCollection<Order>("Order").AsQueryable()) { Console.WriteLine(order.Name + ", " + order.OrderId); } var update = database.GetCollection<Order>("Order").AsQueryable().FirstOrDefault(e => e.OrderId == read.OrderId); update.OrderId.ShouldEqual(read.OrderId); update.Name.ShouldEqual(read.Name); Console.WriteLine("* DELETE *"); var delete = database.GetCollection<Order>("Order").AsQueryable().FirstOrDefault(e => e.OrderId == update.OrderId); database.GetCollection<Order>("Order").Remove(Query.EQ("OrderId", delete.OrderId)); foreach (var order in database.GetCollection<Order>("Order").AsQueryable()) { Console.WriteLine(order.Name + ", " + order.OrderId); } database.GetCollection<Order>("Order").RemoveAll(); Console.WriteLine("* DELETE ALL *"); foreach (var order in database.GetCollection<Order>("Order").AsQueryable()) { Console.WriteLine(order.Name + ", " + order.OrderId); } server.DropDatabase("Order"); }