MongoDB Driver 简单的CURD
c#中我们可以使用MongoDB.Driver驱动进行对MongoDB数据库的增删改查.
首先需要在NuGet中安装驱动

安装完毕后会发现会有三个引用

其中 MongoDB.Driver和MongoDB.Driver.Core是MongoDB的驱动,而MongoDB.Bson是MongoDB以Bson方式存储
注:BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型
1.配置MongoDB
//实例化Mongo的连接字符串对象
static MongoUrl mongoUrl = new MongoUrl("mongodb://127.0.0.1:27017");
//实例化Mongo客户端对象
static MongoClient client = new MongoClient(mongoUrl);
//获取所操作的数据库
static IMongoDatabase db = client.GetDatabase("user");
//获取所操作的集合
static IMongoCollection<User> coll = db.GetCollection<User>("User");
通过上面简单的代码就可以配置完成MongoDB的连接和设置等操作.
其中IMongoCollection接口中封装了对Mongo的CURD操作
上面代码中泛型User为自定义实体类User
public class User
{
[BsonId]
public string ID { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime BornDate { get; set; }
public override string ToString()
{
return $"姓名{Name},性别{Sex},出生日期{BornDate}";
}
}
User实体类中ID和BornDate属性都存在这特性,其中ID属性特性BsonId是声明此属性为数据库中ID,而BornDate中的特性是说明BornDate的序列化方式
2.增加
增加使用IMongoCollection接口中的InsertOne和InsertMany方法,分别为增加一个和多个
public static void AddOne()
{
User user = new User
{
ID = Guid.NewGuid().ToString(),
Name = "狗娃",
Sex = "男",
BornDate = DateTime.Now
};
coll.InsertOne(user); }
public static void AddMany()
{
IEnumerable<User> users = new List<User>
{
new User{ID = Guid.NewGuid().ToString(),Name = "狗剩",Sex = "女",BornDate = DateTime.Now},
new User{ID = Guid.NewGuid().ToString(),Name = "铁蛋",Sex = "男",BornDate = DateTime.Now}
};
coll.InsertMany(users); }
3.查询
查询使用Find方法,其中Find方法有多个参数,例如下面代码:
public static void Find1()
{
var entitys = coll.Find<User>(y => y.Sex == "男").ToList();
foreach (var entity in entitys)
{
Console.WriteLine(entity);
}
}
public static void Find2()
{
//创建过滤器
FilterDefinition<User> filter = Builders<User>.Filter.Eq(y => y.Sex, "男");
var entitys = coll.Find(filter).ToList();
foreach (var item in entitys)
{
Console.WriteLine(item);
}
}
上面代码中我们使用了两种重载,第一种直接在FInd方法中创建Lambda,第二种使用过滤器.两种方式效果一样,不过推荐第一种.
注:Builders.Filter是一个FilterDefinitionBuilder类:;这个类中存在这多种条件。
4.修改
IMongoCollection中有UpdateOne和UpdateMany两类方法,其中UpdateOne更改匹配到的第一项,而UpdateMany更改匹配到的所有项
public static void UpdateOne()
{
UpdateDefinition<User> update= Builders<User>.Update.Set(y => y.Sex, "男");
var res= coll.UpdateOne<User>(y => y.Sex == "女", update);
Console.WriteLine(res.MatchedCount); }
public static void UpdateMany()
{
UpdateDefinition<User> update = Builders<User>.Update.Set(y => y.Sex, "男");
var res = coll.UpdateMany<User>(y => y.Sex == "女", update);
Console.WriteLine(res.MatchedCount); }
以上两个方法其中第一个方法只会更新一条,而第二个会更新两条.
更新时需要先创建所更新的项,即创建UpdateDefinition类实例,通过Builders.Update.Set获取.
然后通过IMongoCollection对象的UpdateOne/UpdateMany方法进行修改,UpdateOne/UpdateMany方法会返回一个UpdateResult对象,这个对象包含着修改的信息
5.删除
IMongoCollection删除方法也是两类,DeleteOne/DeleteMany,其规则与其它一样
public static void DeleteOne()
{
var res= coll.DeleteOne(y => true);
Console.WriteLine(res.DeletedCount);
}
public static void DeleteMany()
{
var res = coll.DeleteMany(y => true);
Console.WriteLine(res.DeletedCount);
}
删除方法也会返回一个DeleteResult对象,其包含着删除的信息.
6.其它方法
在查询时,MongoDB.Driver也可以跟其它数据库一样使用分页,排序等
如排序查询
var entitys = coll.Find<User>(y => y.Sex == "男").Sort(Builders<User>.Sort.Ascending(y=>y.Age)).ToList();
分页查询
var entitys = coll.Find<User>(y => y.Sex == "男").Skip().Limit().ToList();
MongoDB Driver 简单的CURD的更多相关文章
- c# MongoDB Driver  官方教程翻译
		
先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...
 - Node.js学习笔记(3) - 简单的curd
		
这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简 ...
 - PHP7 - MongoDB Driver 使用心得
		
php7 只能使用Mongodb driver来驱动mongodb. 使用Mongodb Driver连接数据库 刚开始使用Mongodb Driver的时候我是拒绝的.查看官方文档只看到一排的类和不 ...
 - C# .NET Core 3.1中使用 MongoDB.Driver 更新嵌套数组元素和关联的一些坑
		
C# .NET Core 3.1中使用 MongoDB.Driver 更新数组元素和关联的一些坑 前言: 由于工作的原因,使用的数据库由原来的 关系型数据库 MySQL.SQL Server 变成了 ...
 - MongoDB的简单操作(asp.net)
		
using System; using System.Collections.Generic; using System.Linq; using System.Web; using MongoDB.D ...
 - C#实现对mongoDB的简单增删查改
		
首先添加所需要驱动包(可通过nuget获得) using MongoDB.Bson;using MongoDB.Driver;using MongoDB.Driver.Builders; 一.设置配置 ...
 - [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
		
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
 - 基于MongoDB.Driver的扩展
		
由于MongoDB.Driver中的Find方法也支持表达式写法,结合[通用查询设计思想]这篇文章中的查询思想,个人基于MongoDB扩展了一些常用的方法. 首先我们从常用的查询开始,由于MongoD ...
 - MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
		
MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...
 
随机推荐
- 学习笔记-echarts点击数据添加跳转链接
			
原链接:http://echarts.baidu.com/demo.html#pie-rich-text 这个一段官方提供的实例. var weatherIcons = { 'Sunny': './d ...
 - poj 2758 && BZOJ 2258 Checking the Text 文本校对
			
Description 为了给Wind买生日礼物,Jiajia不得不找了一份检查文本的工作.这份工作很无聊:给你一段文本 要求比对从文本中某两个位置开始能匹配的最大长度是多少.但比无聊更糟糕的是, ...
 - noi 2016 游记
			
先挖个坑..这回大概不会太监吧(大雾 day -2 下午起飞的飞机,晚上到了成都..把东西扔到旅馆后就组队外出觅食了... 街上人不多,逛了半天才发现一家卖本地小吃的小店. KPM:诶诶给我来碗酸辣粉 ...
 - 利用脚本将EXCEl表倒入PowerDesigner中
			
1.Excel表格样式 2.脚本代码 '****************************************************************************** O ...
 - JavaScript八张思维导图—编程实践
			
JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...
 - Oracle_索引
			
Oracle_索引 索引类似字典的和课本目录,是为了加快对数据的搜索速度而设立的.索引有自己专门的存储空间,与表独立存放. 索引的作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数 ...
 - Micropython TPYBoard 智能温控小风扇资料分享
			
南方都下大雪了,苦逼的北方还没下雪,天寒地冻,不过这几天办公室空调开太大了就想到做一个温控小风扇,简单模型出来了.等夏天一定做一个美观精致的小风扇送给女朋友(如果有的话QAQ)话不多说直接上干货.(跪 ...
 - 如何节省 1TB 图片带宽?解密极致图像压缩
			
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:Gophery 本文由 腾讯技术工程官方号 发布在云+社区 图像已经发展成人类沟通的视觉语言.无论传统互联网还是移动互联网,图像一直占据着 ...
 - PHP和Python如何选择?或许可以考虑这三个问题
			
撤稿纠错 文/黄小天.李亚洲 (选自Hackernoon 机器之心编译) 2017 年可谓是网页应用与 API 之年,开发者不用每次重新发明轮子,而是利用脚手架和第三方库就能确保项目在几天内实时部署. ...
 - servlet入门学习之API
			
java servlet API学习网址: http://tomcat.apache.org/tomcat-7.0-doc/servletapi/ http://tomcat.apache.org/t ...