VS2010编译MONGODB C 驱动
- 格式:pdf
- 大小:396.41 KB
- 文档页数:8
VS2010 C++下编译调试MongoDB源码考虑到m ongodb使用了boost库源码,参考m ongodb官方文档后,下载编译boost版本是1.42(时间为2010-2-2)或更新版本:boost版本1.42:/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download下载boost源码之后,我把boost解压在D盘。
1.在D:\boost_1_42_0\下找到该批处理文件bootstrap.bat,以vs2010命令行方式运行它,并最终生成bjam.exe可执行文件(详细结果及错误信息见生成的bjam.log日志)。
2.将生成的bjam.exe文件拷贝到“D:\boost_1_42_0”目录下,运行下面命令行:bjam stage variant=debug --stagedir="d:\boost_1_42_0" --with-filesystem --with-thread --with-date_time --with-program_options --layout=versioned threading=multi toolset=msvc-10.0如下图:注:i.如果要生成release链接库文件,需将上面的variant设置成release,形如:bjam stage variant=release .....ii.如果要全部生成使用下面编译选项bjam ...... --build-type=com plete编译过程可能会用一些时间,最终会在"D:\boost_1_42_0" 生成一个lib目录,里面包括刚生成的库文件。
3.下载已用vs2010编译的SpiderMonkey库文件及源码包,并将其解压到D盘下,下载链接:https:///dwight/vc2010_js将该文件夹名称改为“js”(因为m ongodb项目会默认指定该路径寻找可用的lib及c源文件),如下图:说明:SpiderMonkey是由C语言操作的JavaScript引擎,它支持JS1.4和ECMAScript-262规范。
如何使用Vi sualStudio 2010(VS2010)编译C语言1.打开VS2010主界面,然后选择,文件→新建→项目,在项目类型中选择VC++→win32然后在右侧模板中选择w in32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)点击“浏览”选择保存位置后,点击“确定”,弹出个对话框,不管它,下一步。
2.接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”,然后点“完成”,对话框消失。
3.回到VS主界面,这时会在左侧和右侧多了如图工具栏““解决方案管理器”,在源文件上点右键,选择“添加→新建项”。
这里注意,如果你已经有写好的C源文件,那么要选择“现有项”。
4.又打开个对话框,不管左边的,在右边的模板中选择C++文件(注一),在下面的名称中输入源文件的名字加上.C(注二),保存位置用默认的。
然后点击“添加”。
5.好了,编辑页面出来了,大家可以写代码了。
这里可以看到,VS2010可以智能的标示出函数参数和函数体,方便查看和修改。
比VC6.0方便多了。
编好了,然后选择调试,或者直接点绿色小箭头按钮(注三)就可以查看程序运行结果了,最后,别忘了保存。
注释:注一:现在已经基本没有纯粹的C编译环境了,都是用兼容C的C++编译工具来编译C,所以创建的模板是C++模板。
(大家一定还记得VC6.0中大家新建的文件也是C++Source File(C++源文件)吧)注二:加上.C后,编译系统就会知道这个是C源,从而创建的是C的源文件,编译的时候就会调用C编译器。
而不加.C,创建的就是C++的源文件。
编译的时候会调用C++的编译器。
虽然C++兼容C,但是在不同的C++编译环境对C的支持度是不同的,就比如本文中的例子,那句syst em函数就是C专有的,如果采用C++来编译就会出错。
如何使用Visual Studio 2010(VS2010)编译C语言1.打开VS2010主界面,然后选择,文件→新建→项目,在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)点击“浏览”选择保存位置后,点击“确定”,弹出个对话框,不管它,下一步。
2.接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”,然后点“完成”,对话框消失。
3.回到VS主界面,这时会在左侧和右侧多了如图工具栏““解决方案管理器”,在源文件上点右键,选择“添加→新建项”。
这里注意,如果你已经有写好的C 源文件,那么要选择“现有项”。
4.又打开个对话框,不管左边的,在右边的模板中选择C++文件(注一),在下面的名称中输入源文件的名字加上.C(注二),保存位置用默认的。
然后点击“添加”。
5.好了,编辑页面出来了,大家可以写代码了。
这里可以看到,VS2010可以智能的标示出函数参数和函数体,方便查看和修改。
比VC6.0方便多了。
编好了,然后选择调试,或者直接点绿色小箭头按钮(注三)就可以查看程序运行结果了,最后,别忘了保存。
注释:注一:现在已经基本没有纯粹的C编译环境了,都是用兼容C的C++编译工具来编译C,所以创建的模板是C++模板。
(大家一定还记得VC6.0中大家新建的文件也是C++SourceFile(C++源文件)吧)注二:加上.C后,编译系统就会知道这个是C源,从而创建的是C的源文件,编译的时候就会调用C编译器。
而不加.C,创建的就是C++的源文件。
编译的时候会调用C++的编译器。
虽然C++兼容C,但是在不同的C++编译环境对C的支持度是不同的,就比如本文中的例子,那句system函数就是C专有的,如果采用C++来编译就会出错。
所以,在不确定所用的C++编译器是不是支持某种C语法的时候,还是老老实实的记得加上.C,来告诉编译系统使用C编译器而不是C++。
MongoDB C# 驱动教程C# 驱动版本v1.6.x本教程基于C#驱动v1.6.x 。
Api 文档见此处:/csharp/current/ . 本教程介绍由10gen支持的,用于MongoDB的C#驱动。
C# 驱动由两个类库组成:BSON Library和C# Driver。
BSON Library 可以独立于C# Driver 使用。
C# Driver 则必须需要BSON Library。
你还可能对C# 驱动序列化教程感兴趣。
它是一个另外的教程因为它涵盖了很多资料。
C# 驱动既有源代码也有二进制文件。
BSON Library 和C# Driver 都存在同一个知识库里,而BSON Library可以独立使用。
原文件可以从进行下载。
我们使用msysgit 作为我们的Windows git 客户端。
可以到这里进行下载:/ .要复制知识库的话,从git bash shell里运行以下命令:$ cd <parentdirectory>$ git config --global core.autocrlf true$ git clone git:///mongodb/mongo-csharp-driver.git$ cd mongo-csharp-driver$ git config core.autocrlf true复制知识库之前,必须将core.autocrlf的全局设置设为true。
当复制完毕后,我们建议你将core.autocrlf的本地设置设为true(如上所示),这样将来core.autocrlf的全局设置更改了也不会影响到这个知识库。
如果你到时候想把全局设置的core.autocrlf改为false,则运行:$ git config --global core.autocrlf falsecore.autocrlf设置的典型问题是git 报告整个文件都被修改了(由于行结尾的差异)。
mongo-c-driver-master的的使用方法-回复mongocdrivermaster是一个用于连接和操作MongoDB数据库的C语言驱动程序。
它提供了一组函数和接口,使开发人员能够轻松地与MongoDB进行交互。
本文将逐步介绍mongocdrivermaster的安装和使用方法。
第一步:安装mongocdrivermaster要使用mongocdrivermaster,首先需要将其安装在您的开发环境中。
以下是在Linux系统上安装mongocdrivermaster的步骤:1. 打开终端并切换到您希望安装mongocdrivermaster的目录。
2. 克隆mongocdrivermaster的源代码库。
可以使用以下命令:git clone3. 进入mongo-c-driver目录,并切换到所需的版本。
在终端中执行以下命令:cd mongo-c-drivergit checkout <version>这里的`<version>`是您想要安装的mongocdrivermaster的版本号。
4. 生成构建文件。
执行以下命令:mkdir cmake-buildcd cmake-buildcmake -DCMAKE_BUILD_TYPE=Release ..5. 使用make命令构建和安装驱动程序。
执行以下命令:makesudo make install安装完成后,mongocdrivermaster将被安装在您的系统中。
第二步:连接MongoDB数据库一旦安装了mongocdrivermaster,您可以开始使用它来连接MongoDB数据库并执行操作。
以下是连接到MongoDB数据库的步骤:1. 在您的代码中引入mongocdrivermaster的头文件。
使用以下语句:#include <mongoc.h>2. 初始化mongocdrivermaster。
Mongodb使⽤基础-Mongodb.Driver操作MongoDB 上⼀篇博客主要介绍了MongoDB和它的的使⽤场景,这篇⽂章主要介绍⼀下如何⽤C#如何借助官⽅的Mongodb.Driver操作MongoDB 1.NuGet引⼊Mongodb.Dirver安装后项⽬中会新增如下dllMongoDB.Driver.dll:顾名思义,驱动程序MongoDB.Bson.dll:序列化、Json相关2.初始化集合,⼦类需重写集合名#region构造函数///<summary>///集合///</summary>public string _collName { get; set; }public MongoBaseRepository(string collName){this._collName = collName;}#endregionView Code3..初始化链接和数据库#region连接配置///<summary>///链接///</summary>private static readonly string conneStr = "mongodb://127.0.0.1:27017";///<summary>///数据库///</summary>private static readonly string dbName = "TestDb";#endregion#region单例创建链接private static IMongoClient _mongoclient { get; set; }private static IMongoClient CreateClient(){if (_mongoclient == null){_mongoclient = new MongoClient(conneStr);}return _mongoclient;}#endregion#region获取链接和数据库private IMongoClient client = CreateClient();public IMongoDatabase _database { get { return _mongoclient.GetDatabase(dbName); } } public IMongoDatabase GetDatabase(){return _database;}public IMongoCollection<T> GetClient<T>() where T : class, new(){return _database.GetCollection<T>(_collName);}#endregionView Code4.操作Add:#region +Add 添加⼀条数据///<summary>///添加⼀条数据///</summary>///<param name="t">添加的实体</param>///<param name="host">mongodb连接信息</param>///<returns></returns>public int Add<T>(T t) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);client.InsertOne(t);return1;}catch (Exception ex){return0;}}#endregion#region +AddAsync 异步添加⼀条数据///<summary>///异步添加⼀条数据///</summary>///<param name="t">添加的实体</param>///<param name="host">mongodb连接信息</param>///<returns></returns>public async Task<int> AddAsync<T>(T t) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);await client.InsertOneAsync(t);return1;}catch{return0;}}#endregion#region +InsertMany 批量插⼊///<summary>///批量插⼊///</summary>///<param name="host">mongodb连接信息</param>///<param name="t">实体集合</param>///<returns></returns>public int InsertMany<T>(List<T> t) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);client.InsertMany(t);return1;}catch (Exception ex){return0;}}#endregion#region +InsertManyAsync 异步批量插⼊///<summary>///异步批量插⼊///</summary>///<param name="host">mongodb连接信息</param>///<param name="t">实体集合</param>///<returns></returns>public async Task<int> InsertManyAsync<T>(List<T> t) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);await client.InsertManyAsync(t);return1;}catch{return0;}}#endregionView CodeModify:#region +Update 修改⼀条数据///<summary>///修改⼀条数据///</summary>///<param name="t">添加的实体</param>///<param name="host">mongodb连接信息</param>///<returns></returns>public UpdateResult Update<T>(T t, string id, bool isObjectId = true) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);//修改条件FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}//要修改的字段var list = new List<UpdateDefinition<T>>();foreach (var item in t.GetType().GetProperties()){if (.ToLower() == "id") continue;list.Add(Builders<T>.Update.Set(, item.GetValue(t)));}var updatefilter = Builders<T>bine(list);return client.UpdateOne(filter, updatefilter);}catch (Exception ex){throw ex;}}#endregion#region +UpdateAsync 异步修改⼀条数据///<summary>///异步修改⼀条数据///</summary>///<param name="t">添加的实体</param>///<param name="host">mongodb连接信息</param>///<returns></returns>public async Task<UpdateResult> UpdateAsync<T>(T t, string id, bool isObjectId) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);//修改条件FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}//要修改的字段var list = new List<UpdateDefinition<T>>();foreach (var item in t.GetType().GetProperties())if (.ToLower() == "id") continue;list.Add(Builders<T>.Update.Set(, item.GetValue(t)));}var updatefilter = Builders<T>bine(list);return await client.UpdateOneAsync(filter, updatefilter);}catch (Exception ex){throw ex;}}#endregion#region +UpdateManay 批量修改数据///<summary>///批量修改数据///</summary>///<param name="dic">要修改的字段</param>///<param name="host">mongodb连接信息</param>///<param name="filter">修改条件</param>///<returns></returns>public UpdateResult UpdateManay<T>(Dictionary<string, string> dic, FilterDefinition<T> filter) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);T t = new T();//要修改的字段var list = new List<UpdateDefinition<T>>();foreach (var item in t.GetType().GetProperties()){if (!dic.ContainsKey()) continue;var value = dic[];list.Add(Builders<T>.Update.Set(, value));}var updatefilter = Builders<T>bine(list);return client.UpdateMany(filter, updatefilter);}catch (Exception ex){throw ex;}}#endregion#region +UpdateManayAsync 异步批量修改数据///<summary>///异步批量修改数据///</summary>///<param name="dic">要修改的字段</param>///<param name="host">mongodb连接信息</param>///<param name="filter">修改条件</param>///<returns></returns>public async Task<UpdateResult> UpdateManayAsync<T>(Dictionary<string, string> dic, FilterDefinition<T> filter) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);T t = new T();//要修改的字段var list = new List<UpdateDefinition<T>>();foreach (var item in t.GetType().GetProperties()){if (!dic.ContainsKey()) continue;var value = dic[];list.Add(Builders<T>.Update.Set(, value));}var updatefilter = Builders<T>bine(list);return await client.UpdateManyAsync(filter, updatefilter);}catch (Exception ex){throw ex;}}#endregionView CodeRemove:#region Delete 删除⼀条数据///<summary>///删除⼀条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="id">objectId</param>///<returns></returns>public DeleteResult Delete<T>(string id, bool isObjectId = true) where T : class, new(){{var client = _database.GetCollection<T>(_collName);FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}return client.DeleteOne(filter);}catch (Exception ex){throw ex;}}#endregion#region DeleteAsync 异步删除⼀条数据///<summary>///异步删除⼀条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="id">objectId</param>///<returns></returns>public async Task<DeleteResult> DeleteAsync<T>(string id, bool isObjectId = true) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);//修改条件FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}return await client.DeleteOneAsync(filter);}catch (Exception ex){throw ex;}}#endregion#region DeleteMany 删除多条数据///<summary>///删除⼀条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">删除的条件</param>///<returns></returns>public DeleteResult DeleteMany<T>(FilterDefinition<T> filter) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);return client.DeleteMany(filter);}catch (Exception ex){throw ex;}}#endregion#region DeleteManyAsync 异步删除多条数据///<summary>///异步删除多条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">删除的条件</param>///<returns></returns>public async Task<DeleteResult> DeleteManyAsync<T>(FilterDefinition<T> filter) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);return await client.DeleteManyAsync(filter);}catch (Exception ex){throw ex;}}#endregionView CodeFind:#region FindOne 根据id查询⼀条数据///<summary>///根据id查询⼀条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="id">objectid</param>///<param name="field">要查询的字段,不写时查询全部</param>///<returns></returns>public T FindOne<T>(string id, bool isObjectId = true, string[] field = null) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}//不指定查询字段if (field == null || field.Length == 0){return client.Find(filter).FirstOrDefault<T>();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();return client.Find(filter).Project<T>(projection).FirstOrDefault<T>();}catch (Exception ex){throw ex;}}#endregion#region FindOneAsync 异步根据id查询⼀条数据///<summary>///异步根据id查询⼀条数据///</summary>///<param name="host">mongodb连接信息</param>///<param name="id">objectid</param>///<returns></returns>public async Task<T> FindOneAsync<T>(string id, bool isObjectId = true, string[] field = null) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);FilterDefinition<T> filter;if (isObjectId){filter = Builders<T>.Filter.Eq("_id", new ObjectId(id));}else{filter = Builders<T>.Filter.Eq("_id", id);}//不指定查询字段if (field == null || field.Length == 0){return await client.Find(filter).FirstOrDefaultAsync();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();return await client.Find(filter).Project<T>(projection).FirstOrDefaultAsync();}catch (Exception ex){throw ex;}}#endregion#region FindList 查询集合///<summary>///查询集合///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">查询条件</param>///<param name="field">要查询的字段,不写时查询全部</param>///<param name="sort">要排序的字段</param>///<returns></returns>public List<T> FindList<T>(FilterDefinition<T> filter, string[] field = null, SortDefinition<T> sort = null) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);//不指定查询字段if (field == null || field.Length == 0){if (sort == null) return client.Find(filter).ToList();//进⾏排序return client.Find(filter).Sort(sort).ToList();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();if (sort == null) return client.Find(filter).Project<T>(projection).ToList();//排序查询return client.Find(filter).Sort(sort).Project<T>(projection).ToList();}catch (Exception ex){throw ex;}}#endregion#region FindListAsync 异步查询集合///<summary>///异步查询集合///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">查询条件</param>///<param name="field">要查询的字段,不写时查询全部</param>///<param name="sort">要排序的字段</param>///<returns></returns>public async Task<List<T>> FindListAsync<T>(FilterDefinition<T> filter, string[] field = null, SortDefinition<T> sort = null) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);//不指定查询字段if (field == null || field.Length == 0){if (sort == null) return await client.Find(filter).ToListAsync();return await client.Find(filter).Sort(sort).ToListAsync();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();if (sort == null) return await client.Find(filter).Project<T>(projection).ToListAsync();//排序查询return await client.Find(filter).Sort(sort).Project<T>(projection).ToListAsync();}catch (Exception ex){throw ex;}}#endregion#region FindListByPage 分页查询集合///<summary>///分页查询集合///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">查询条件</param>///<param name="pageIndex">当前页</param>///<param name="pageSize">页容量</param>///<param name="count">总条数</param>///<param name="field">要查询的字段,不写时查询全部</param>///<param name="sort">要排序的字段</param>///<returns></returns>public List<T> FindListByPage<T>(FilterDefinition<T> filter, int pageIndex, int pageSize, out long count, string[] field = null, SortDefinition<T> sort = null) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);count = client.CountDocuments(filter);//不指定查询字段if (field == null || field.Length == 0){if (sort == null) return client.Find(filter).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList();//进⾏排序return client.Find(filter).Sort(sort).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();//不排序if (sort == null) return client.Find(filter).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList();//排序查询return client.Find(filter).Sort(sort).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToList();}catch (Exception ex){throw ex;}}#endregion#region FindListByPageAsync 异步分页查询集合///<summary>///异步分页查询集合///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">查询条件</param>///<param name="pageIndex">当前页</param>///<param name="pageSize">页容量</param>///<param name="field">要查询的字段,不写时查询全部</param>///<param name="sort">要排序的字段</param>///<returns></returns>public async Task<List<T>> FindListByPageAsync<T>(FilterDefinition<T> filter, int pageIndex, int pageSize, string[] field = null, SortDefinition<T> sort = null) where T : class, new() {try{var client = _database.GetCollection<T>(_collName);//不指定查询字段if (field == null || field.Length == 0){if (sort == null) return await client.Find(filter).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();//进⾏排序return await client.Find(filter).Sort(sort).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();}//制定查询字段var fieldList = new List<ProjectionDefinition<T>>();for (int i = 0; i < field.Length; i++){fieldList.Add(Builders<T>.Projection.Include(field[i].ToString()));}var projection = Builders<T>bine(fieldList);fieldList?.Clear();//不排序if (sort == null) return await client.Find(filter).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();//排序查询return await client.Find(filter).Sort(sort).Project<T>(projection).Skip((pageIndex - 1) * pageSize).Limit(pageSize).ToListAsync();}catch (Exception ex){throw ex;}}#endregionView CodeCount:#region Count 根据条件获取总数///<summary>///根据条件获取总数///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">条件</param>///<returns></returns>public long Count<T>(FilterDefinition<T> filter) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);return client.CountDocuments(filter);}catch (Exception ex){throw ex;}}#endregion#region CountAsync 异步根据条件获取总数///<summary>///异步根据条件获取总数///</summary>///<param name="host">mongodb连接信息</param>///<param name="filter">条件</param>///<returns></returns>public async Task<long> CountAsync<T>( FilterDefinition<T> filter) where T : class, new(){try{var client = _database.GetCollection<T>(_collName);return await client.CountDocumentsAsync(filter);}catch (Exception ex){throw ex;}}#endregionView Code查询实例:public async Task<IList<Messages>> MyMessage(BaseCondition condition){//根据时间排序var sort = Builders<Messages>.Sort.Ascending("State");var list = new List<FilterDefinition<Messages>>();list.Add(Builders<Messages>.Filter.Eq("ReciveCode","admin"));//>开始时间 <结束时间if (!string.IsNullOrEmpty(condition.startTime) && !string.IsNullOrEmpty(condition.endTime)) {list.Add(Builders<Messages>.Filter.Gte("CreateDate", condition.startTime));list.Add(Builders<Messages>.Filter.Lte("CreateDate", condition.endTime));}//Or条件if (!string.IsNullOrEmpty(condition.SerachCondition)){var list_or = new List<FilterDefinition<Messages>>();list_or.Add(Builders<Messages>.Filter.Regex("Title", condition.SerachCondition));list_or.Add(Builders<Messages>.Filter.Regex("MContent", condition.SerachCondition)); list_or.Add(Builders<Messages>.Filter.Regex("SendCode", condition.SerachCondition)); list.Add(Builders<Messages>.Filter.Or(list_or));}var filter = Builders<Messages>.Filter.And(list);var result = await base.FindListAsync<Messages>(filter, null, sort);return result;}View Code时间格式需要序列化,如下5.ObjectId详解MongoDB中我们经常会接触到⼀个⾃动⽣成的字段:”_id”,类型为ObjectId。
MongoDB⼊门教程之C#驱动操作实例作为系列的最后⼀篇,得要说说C#驱动对mongodb的操作,⽬前驱动有两种:官⽅驱动和samus驱动,不过我个⼈还是喜欢后者,因为提供了丰富的linq操作,相当⽅便。
⼀个简单的demo,⼤体上看看我们就知道怎么玩了。
⼀:实践1:我们建⽴⼀个Person实体,MongoAlias特性表⽰取别名,这⾥的ID值将会覆盖掉数据库⾃动⽣成的_id。
复制代码代码如下:#region 数据实体/// <summary>/// 数据实体/// </summary>public class Person{[MongoAlias("_id")]public string ID { get; set; }public string Name { get; set; }public int Age { get; set; }public DateTime CreateTime { get; set; }}#endregion2:初始化⼀些变量复制代码代码如下:string connectionString = string.Empty;string databaseName = string.Empty;string collectionName = string.Empty;static MongodbHelper<T> mongodb;#region 初始化操作/// <summary>/// 初始化操作/// </summary>public MongodbHelper(){connectionString = "Server=127.0.0.1:2222";databaseName = "shopex";collectionName = "person";}#endregion3:为了⽅便T的继承类使⽤linq功能,我们还需要映射⼀下。