0

0

使用C#对MongoDB中的数据进行查询,修改等操作

php中文网

php中文网

发布时间:2016-06-07 15:55:41

|

2376人浏览过

|

来源于php中文网

原创

首先,使用的是官方提供的C#访问组件https://github.com/mongodb/mongo-csharp-driver 然后、编译后引用MongoDB.Bson.dll及MongoDB.Driver.dll,并在cs文件中声明引用using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders;第一个是针对Bso

首先,使用的是官方提供的C#访问组件https://github.com/mongodb/mongo-csharp-driver
然后、编译后引用MongoDB.Bson.dll及MongoDB.Driver.dll,并在cs文件中声明引用 using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; 第一个是针对Bson格式的命名空间,第二个是主空间,第三个是用来构造查询和更新等条件的构造器命名空间
一、数据库连接 MongoClient client = null; MongoServer server = null; //connection string conStr = "mongodb://user:pw@127.0.0.1/db1"; client = new MongoClient(conStr); server = client.GetServer(); server.Connect();
注意连接串的写法,上面的写法是带用户认证的,关于连接串写法的更多信息可以参考http://docs.mongodb.org/ecosystem/tutorial/authenticate-with-csharp-driver/
二、获取数据库内的Collection MongoDatabase db = server.GetDatabase("db1"); MongoCollection colaa = db.GetCollection("col1"); 这里获取在db1数据库下,名为col1的Collection,
这里获取的MongoCollection支持泛型,可以按默认的BsonDocument为一行的格式获取,也可以按自定义的类来获取, 若按BsonDocument为一行获取,代码如下(每个BsonDocument对象为Collection的一行): MongoCursor doc = colaa.FindAllAs(); foreach (BsonDocument book in doc) {}
若按自定义的类为一行来获取,代码如下: MongoCursor res = colaa.FindAllAs(); foreach (row row1 in res){} 这里要注意,如果按自定义类来获取,那么类需要预先定义好,且类中的变量名必须与数据库中一致,且列数也需要一致,若出现数据库中有某一列,但类中缺少这个对象时,会报错,下面是一个类定义的示例: public class row { public ObjectId _id; public string name; public string part; public string age; } 上例中,FindAllAs函数为全部查询,还有一些其它行查询及筛选方法,见http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#mongocollection-tdefaultdocument-class中的MongoCollection部分 三、读取Collection中一行内的内容 和上面对应的,有两种情况,如果是按自定义类来获取的数据行,那么直接访问类的成员变量即可
如果是按BsonDocument获取的,那每一行数据对应一个BsonDocument,一个BsonDocument是由多个“Name-Value"对构成的,其中Name为String格式,Value为BsonValue类型,该值可以直接使用book["name"]的格式进行访问,关于BsonValue的进一步详细说明,可以参考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#bsonvalue-and-subclasses中的BsonValue部分
四:新建Collection 新建Colletion很简单,代码示例如下,但注意,如果已经存在了指定名称的Collection,则会抛出异常 //create Collection MongoDatabase db = server.GetDatabase("db1"); var res =db.CreateCollection("col2");
五:插入行 同样分两种情况,插入方式基本相同,代码如下: //insert MongoDatabase db = server.GetDatabase("db1"); MongoCollection colaa = db.GetCollection("col1"); //使用BsonDocument格式插入 BsonDocument doc = new BsonDocument { { "name", "sse2" }, { "part", "44224" } }; colaa.Insert(doc); //使用自定类插入 row r1 = new row { name = "sse3", part = "554" }; colaa.Insert(r1);
这里注意一下,如果自定义类里某一个变量没有赋值,在插入到数据库时,也会写一个Null进去,而BsonDocument则不会出现这个元素,比如上两个语句的运行结果: { "_id" : ObjectId("5355d8dfccee160de4dca545"), "name" : "sse2", "part" : "44224" } { "_id" : ObjectId("5355d93bccee16088491c420"), "name" : "sse3", "part" : "554", "age" : null }
还有一些的方法,例如批量写入等,可以参考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#insertbatch-method中的相应内容
六:更新行 更新行时需要使用到构造器构造查询条件和更新语句,Query为查询条件构造器,Update为更新语句构造器,代码示例如下: //update MongoDatabase db = server.GetDatabase("db1"); MongoCollection colaa = db.GetCollection("col1"); var query = Query.And( Query.EQ("name", "sse3"), Query.EQ("part", "554") ); var update = MongoDB.Driver.Builders.Update.Set("age", "36"); colaa.Update(query, update);
其它还有一些更新的函数,比如更新和插入为一体的Save等,可以参考http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#save-tdocument-method的相应内容
七:删除行 删除行时也需要使用到Query构造器构造查询条件,语句会将符合条件的行删除掉,代码示例如下: //remove MongoDatabase db = server.GetDatabase("db1"); MongoCollection colaa = db.GetCollection("col1"); var query = Query.And( Query.EQ("name", "sse3"), Query.EQ("part", "554") ); var res = colaa.Remove(query);

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 7.8万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.2万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号