netcore 使用mongodb
docker 安装mongodb:docker pull mongo
运行容器
新建项目Contact.Api 实现一个简易的联系人列表
nuget引用包MongoDB.Driver
添加配置文件
"ConnectionStrings": { "ConnectionString": "mongodb://localhost:27017", "Database": "Finbook_Contacts", "LogCollection": "Finbook_Contacts_log" }
添加数据库配置
////// 数据库配置信息 /// public class DBSettings { ////// mongodb connectionstring /// public string ConnectionString { get; set; } ////// mongodb database /// public string Database { get; set; } ////// 日志collection /// public string LogCollection { get; set; } }
添加db上下文
public class ContactContext { private IMongoDatabase _dataBase; private readonly string _logCollection; public ContactContext(IOptionssettings) { var client = new MongoClient(settings.Value.ConnectionString); if (client != null) _dataBase = client.GetDatabase(settings.Value.Database); _logCollection = settings.Value.LogCollection; } private void CheckAddCreateCollection(string collectionName) { var collectionList = _dataBase.ListCollections().ToList(); var collectionNames = new List<string>(); //获得所有集合的名称 collectionList.ForEach(x => { collectionNames.Add(x["name"].AsString); }); //如果没有这个集合就创建一个 (相当于创建一个表) if (!collectionNames.Contains(collectionName)) { _dataBase.CreateCollection(collectionName); } } public IMongoCollection LogEventDatas { get { CheckAddCreateCollection(_logCollection); return _dataBase.GetCollection (_logCollection); } } public IMongoCollection ContactBooks { get { CheckAddCreateCollection("ContactBooks"); return _dataBase.GetCollection ("ContactBooks"); } } public IMongoCollection GetCollection (string name) where T : class { CheckAddCreateCollection(name); return _dataBase.GetCollection (name); } public IMongoCollection ContactApplyRequests { get { CheckAddCreateCollection("ContactApplyRequests"); return _dataBase.GetCollection ("ContactApplyRequests"); } } }