.Net中MoongoDB的简单调用图文教程_实用技巧

来源:脚本之家  责任编辑:小易  

简[jiǎn]不复杂:~单。易。略。要。便。洁。练。册繁就~。言~意赅www.zgxue.com防采集请勿采集本网。

前言

本文主要给大家介绍了关于.Net中MoongoDB调用的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

化简 一般指在物理化学数学等理工科中把复杂式子化为简单式子的过程 分式化简为约分,整式化简为移项,合并同类项等 化简后的式子一般为最简式子,项数减少.

方法如下:

最简式,又称实验式或经验式,是化学式中的一种. 最简式是用元素符号表示化合物分子中各元素的原子个数比的最简关系式.由于实验式一般都是通过分析化学的元素分析法获得的,尤其是通过有机化学中

1、安装.Net 驱动:Install-Package MongoDB.Driver

简:古代用来写字的竹板。简牍是中国古代先民在纸张发明之前书写典籍、文书等文字载体的主要材料,是我国最古老的图书之一。简牍与甲骨文、敦煌遗书、明清档案一同被列为二十世纪东方文明的四大

2、数据插入 ,链接数据库  

简·格雷 比博士更有潜力的人物 集合了X博士能操纵人和万磁王能操纵金属 而且不局限于此 什么都能移动 排到第四只是因为她太年轻 能力还不稳定。至于第一战中也能读脑的女人 相比太弱。姓名:琴

//新建Person测试类 public class Person { public long Id { get; set; } public int Age { get; set; } public string Name { get; set; } public int Height { get; set; } public TestPerson t1{ get; set; } } public class TestPerson { public string Name { get; set; } } public class ObjectPerson { public ObjectId Id { get; set; } public int Age { get; set; } public string Name { get; set; } public int Height { get; set; } }

括号外的那个碳连3个碳 括号中的3个甲基连括号外的碳 结构简式中的括号代表几个相同的集团 为了简便 就那样写了 括号外的数字代表相同集团的数量 如你的例子(CH3)3-C-代表3个甲基和括号外的那个

MongoClient client = new MongoClient("mongodb://127.0.0.1"); IMongoDatabase database = client.GetDatabase("TestDb");//相当于数据库 IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//大致相当于表 Person p1 = new Person() { Id = 2, Name = "test1", Age = 29, Height=130 }; collection.InsertOne(p1);//单条插入也支持异步方法,后面建议都用异步的!习惯成自然!

回到客户端工具刷新一下,就能看到新插入的数据,MongoDB 会自动创建“数据库” 以及 Collection(约等于“表”)。MongoDB 默认用 id 做主键,因此不用显式指定 id 是主键。

MongoDB 中没有内置“自增字段”,可以把 Id 声明为 ObjectId 类型(using MongoDB.Bson) 这样插入以后就自动给字段赋值。

//多条插入 IMongoCollection<ObjectPerson> collection1 = database.GetCollection<ObjectPerson>("ObjectPersons");//大致相当于表 List<ObjectPerson> persons = new List<ObjectPerson>() { new ObjectPerson() { Name = "test2", Age = 30, Height = 135 }, new ObjectPerson() { Name = "test3", Age = 31, Height = 140 } }; collection1.InsertMany(persons);//多条插入

MongoDB 是用 json 保存的,因此也可以直接以 json 格式插入,用 BsonDocument 来代表:

IMongoCollection<BsonDocument> dogs = database.GetCollection<BsonDocument>("Dogs");string jsondata = "{id:8999,Age:81,Name:'japan',gender:true}";BsonDocument p2 = BsonDocument.Parse(jsondata);dogs.InsertOne(p2);

还可以插入有嵌套关系的对象,比如学生和老师,注意不会有表间关系,都是存到一个集合中,注意和关系库不一样。

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//大致相当于表Person p1 = new Person(){ Id = 2, Name = "test1", Age = 29, Height=130, t1=new TestPerson() { Name="222"}}; collection.InsertOne(p1);//单条插入

3、MongoDB查询

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");var filter = Builders<Person>.Filter.Gt(p => p.Age,5);var filter1 = Builders<Person>.Filter.And(Builders<Person>.Filter.Gt(p => p.Age, 5), Builders<Person>.Filter.Eq(p => p.Id, 1));// And 并且 还有or方法var filter2 = Builders<Person>.Filter.Where(p => p.Age > 5 && p.Id == 1);//和上面的写法是一样的但是,建议用Where方法 //普通查询var result= collection.Find(filter).ToList();foreach (var item in result){ Console.WriteLine(item.Age + item.Name);}

除了 Gt,还有 Gte、In、Lt、Lte、Ne、Nin、Near、NearSphere、Or、Where、And、Not。 当然最常用的还是 Where 操作:

 异步查询

//异步查询 using (IAsyncCursor<Person> personsCursor = await collection.FindAsync<Person>(filter)) { while (personsCursor.MoveNextAsync().Result)//获取下一组数据,相当于是否有指针,MongoDB其实是返回一个组,不像sql每次是一次次取 { IEnumerable<Person> items = personsCursor.Current;//返回当前组的数据 foreach (var item in items) { Console.WriteLine(item.Age + item.Name); } } //如果数据量不大,可以直接tolist var results = personsCursor.ToList();}

  为什么 FindAsync 不直接返回集合,而是要 MoveNext 之后返回一个集合呢?因为返回 的数据量可能很大,因此 MongoDB 是分批下载,下载一批之后执行 GET_More 操作返回下 一批。可以通过 FindOptions 参数的 BatchSize 设置每一批的大小。

  如果确认返回的数据量 不大,可以 var ps = await personsCursor.ToListAsync()(或者 ToEnumerable()等)一下子返回所有数据。还有 Any、First、FirstOrDefault 等以及异步操作。需要注意 MongoDB 中查询区分大小写。

4、分页查询

//分页FindOptions<Person, Person> findop = new FindOptions<Person, Person>();findop.Limit = 3;//取最多几条findop.Skip = 2;//跳过几条findop.Sort = Builders<Person>.Sort.Ascending(p => p.Age).Ascending(p => p.Name);//排序using (var cursor = collection.FindAsync(filter, findop).Result){ var items = cursor.ToList(); foreach (var item in items) { Console.WriteLine(item.Age + item.Name); }}

  指定排序规则 findop.Sort = Builders<Person>.Sort.Ascending(p => p.Age).Ascending(p => p.Name);

5、Json格式取法

//json格式取法IMongoCollection<BsonDocument> bsonDoc = database.GetCollection<BsonDocument>("Persons");var filter4 = Builders<BsonDocument>.Filter.Gt("Age", 5);using (var persons=await bsonDoc.FindAsync(filter4)) { foreach (var item in await persons.ToListAsync()) { Console.WriteLine(item.GetValue("Name").AsString); }}

6、Update更新操作

IMongoCollection<Person> upPersons = database.GetCollection<Person>("Persons");var upFilter = Builders<Person>.Filter.Where(p => p.Age>20);//筛选条件var update = Builders<Person>.Update.Set(c => c.Name, "test2");//更新条件,将Name更新成test2upPersons.UpdateMany(filter, update);

7、Delete删除操作

IMongoCollection<Person> teachers = database.GetCollection<Person>("Persons");var deletefilter = Builders<Person>.Filter.Where(p => p.Id == 1);teachers.DeleteMany(deletefilter);

 用 Update 机会比较少,如果频繁的用 Update 可能意味着用错了;也不要想着 join、group by, 还是场景不对!

8、MongoDB 应用场景

  日志记录系统;设备监控数据的存储;饿了么外卖骑手接单; 存储商品、商家信息;网站评论信息;存储爬虫爬过来的第三方数据;

  但是像订单、金融交易、游戏装备等这些关键信息不要用 MongoDB;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对真格学网的支持。

删除繁杂部分,使其趋于简明。(删:除去。就:趋向。删繁就简:删:除去。就:趋向。指去掉繁杂的部分,力求简明、精练内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net 截取http请求的实现代码
  • asp.net state service状态服务的问题解决方法
  • 不可忽视的 .net 应用5大性能问题
  • vb.net调用mysql存储过程并获得返回值的方法
  • asp.net下上传图片到数据库,并且读出图片的代码(详细版)
  • vs.net控件updatepanel实现无刷新的方法
  • .net实现repeater控件+aspnetpager控件分页
  • asp.net5中用户认证与授权(2)
  • visual studio 2010 前端开发工具/扩展/插件推荐
  • asp.net生成eurl.axd http异常错误的处理方法
  • 删繁就简中的简是什么意思
  • 删繁就简中的简是什么意思
  • 化学中的最简式是什么意思
  • 请问图中的结构简式怎么书写
  • 数学中“化简”指什么意思
  • 有机化合物中最简式是什么意思?
  • 竹简中的简字是什么意思
  • X战警中简的资料
  • 化学中结构简式中的括号代表什么
  • 化学上的分子式,结构式,结构简式,最简式分别指的是什么
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧asp.net 截取http请求的实现代码asp.net state service状态服务的问题解决方法不可忽视的 .net 应用5大性能问题vb.net调用mysql存储过程并获得返回值的方法asp.net下上传图片到数据库,并且读出图片的代码(详细版)vs.net控件updatepanel实现无刷新的方法.net实现repeater控件+aspnetpager控件分页asp.net5中用户认证与授权(2)visual studio 2010 前端开发工具/扩展/插件推荐asp.net生成eurl.axd http异常错误的处理方法java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"asp.mvc 2.0实现用户注册实例讲解(1)详解asp.net数据绑定操作中repeater控件的asp.net自定义控件之加载层asp.net 连接mysql的实现代码[].aspx中的命名空间设置实现代码asp.net数据绑定databind使用方法asp.net技巧:请求网址并解析返回的htmlajaxtoolkit:calendarextender演示与实现asp.net 2.0 程序安全的基础知识asp.net中高质量缩略图的生成代码
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved