MongoDB探索之路(二)——系统设计之CRUD
1.构造实体类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace EM.Model 8 { 9 public class News 10 { 11 public string _id { get; set; } 12 public string title { get; set; } 13 public string url { get; set; } 14 public string author { get; set; } 15 public int vote_count { get; set; } 16 public List<string> tags { get; set; } 17 public image image { get; set; } 18 public List<comments> comments { get; set; } 19 public DateTime createTime { get; set; } 20 public DateTime updateTime { get; set; } 21 } 22 public class image 23 { 24 public string url { get; set; } 25 public string caption { get; set; } 26 public string type { get; set; } 27 public string size { get; set; } 28 public string data { get; set; } 29 } 30 public class comments 31 { 32 public int userId { get; set; } 33 public string user { get; set; } 34 public string text { get; set; } 35 public DateTime createTime { get; set; } 36 public DateTime updateTime { get; set; } 37 } 38 39 40 }
2.增加一条记录
1 News news = new News(); 2 news._id = Guid.NewGuid().ToString(); 3 news.title = "大新闻"; 4 news.url = "http://www.cnblogs.com/cnki/"; 5 news.author = "沐风"; 6 news.vote_count = 100; 7 List<string> tagsList = new List<string>() { "国际", "编程", "dota" }; 8 news.tags = tagsList; 9 image img = new image(); 10 img.url = "http://www.cnblogs.com/cnki/"; 11 img.caption = "好图"; 12 img.type = "回忆录"; 13 img.size = "3M"; 14 img.data = "dota三人组"; 15 news.image = img; 16 17 List<comments> commentsList = new List<EM.Model.comments>(); 18 comments comment1 = new comments(); 19 comment1.userId = 1; 20 comment1.user = "三生石"; 21 comment1.text = "你所有的努力,只是为了更好的衬托别人的成功。"; 22 comment1.createTime = DateTime.Now; 23 comment1.updateTime = DateTime.Now; 24 commentsList.Add(comment1); 25 26 comments comment2 = new comments(); 27 comment2.userId = 2; 28 comment2.user = "影魔"; 29 comment2.text = "明明可以靠脸吃饭,他却偏要靠才华,最后还是饿死了。"; 30 comment2.createTime = DateTime.Now; 31 comment2.updateTime = DateTime.Now; 32 commentsList.Add(comment2); 33 34 35 news.comments = commentsList; 36 37 news.createTime = DateTime.Now; 38 news.updateTime = DateTime.Now; 39 40 bool b = MongoDBServiceFactory.CreateMongoDBService(conStrNo, databaseName).Insert<News>("News", news);
存入MongoDB后的单条集合格式
{"_id" : "95565797-8572-4281-b6e6-6820d0c8dc37","title" : "大新闻","url" : "http://www.cnblogs.com/cnki/","author" : "沐风","vote_count" : 100,"tags" : [ "国际", "编程", "dota"],"image" : {"url" : "http://www.cnblogs.com/cnki/","caption" : "好图","type" : "回忆录","size" : "3M","data" : "dota三人组"},"comments" : [ {"userId" : 1,"user" : "三生石","text" : "你所有的努力,只是为了更好的衬托别人的成功。","createTime" : ISODate("2016-12-05T13:40:46.142Z"),"updateTime" : ISODate("2016-12-05T13:40:46.142Z")}, {"userId" : 2,"user" : "影魔","text" : "明明可以靠脸吃饭,他却偏要靠才华,最后还是饿死了。","createTime" : ISODate("2016-12-05T13:40:46.142Z"),"updateTime" : ISODate("2016-12-05T13:40:46.142Z")}],"createTime" : ISODate("2016-12-05T13:40:46.142Z"),"updateTime" : ISODate("2016-12-05T13:40:46.142Z") }
增加一条评论
1 comments commentsInfo = new comments(); 2 commentsInfo.userId = 3; 3 commentsInfo.user = "mf"; 4 commentsInfo.text = "世界太美好"; 5 commentsInfo.createTime = DateTime.Now; 6 commentsInfo.updateTime = DateTime.Now; 7 var update = Builders<News>.Update.Push(m => m.comments, commentsInfo); 8 bool bUpdateOne = MongoDBServiceFactory.CreateMongoDBService(conStrNo, databaseName).UpdateOne<News>("News", m => m._id == "95565797-8572-4281-b6e6-6820d0c8dc37", update);
结果
1 { 2 "_id" : "95565797-8572-4281-b6e6-6820d0c8dc37", 3 "title" : "大新闻", 4 "url" : "http://www.cnblogs.com/cnki/", 5 "author" : "沐风", 6 "vote_count" : 100, 7 "tags" : [ 8 "国际", 9 "编程", 10 "dota" 11 ], 12 "image" : { 13 "url" : "http://www.cnblogs.com/cnki/", 14 "caption" : "好图", 15 "type" : "回忆录", 16 "size" : "3M", 17 "data" : "dota三人组" 18 }, 19 "comments" : [ 20 { 21 "userId" : 1, 22 "user" : "三生石", 23 "text" : "你所有的努力,只是为了更好的衬托别人的成功。", 24 "createTime" : ISODate("2016-12-05T13:40:46.142Z"), 25 "updateTime" : ISODate("2016-12-05T13:40:46.142Z") 26 }, 27 { 28 "userId" : 2, 29 "user" : "影魔", 30 "text" : "明明可以靠脸吃饭,他却偏要靠才华,最后还是饿死了。", 31 "createTime" : ISODate("2016-12-05T13:40:46.142Z"), 32 "updateTime" : ISODate("2016-12-05T13:40:46.142Z") 33 }, 34 { 35 "userId" : 3, 36 "user" : "mf", 37 "text" : "世界太美好", 38 "createTime" : ISODate("2016-12-05T13:44:16.831Z"), 39 "updateTime" : ISODate("2016-12-05T13:44:16.832Z") 40 } 41 ], 42 "createTime" : ISODate("2016-12-05T13:40:46.142Z"), 43 "updateTime" : ISODate("2016-12-05T13:40:46.142Z") 44 }
3.查询一条记录
News news = MongoDBServiceFactory.CreateMongoDBService(conStr, databaseName).Single<News>("News", m => m.author == "沐风");
4.更新一条记录
a.支持数增加1
var updateDef = Builders<News>.Update.Inc(x => x.vote_count, 1);bool update = MongoDBServiceFactory.CreateMongoDBService(conStr, databaseName).UpdateOne<News>("News", x => x._id == "95565797-8572-4281-b6e6-6820d0c8dc37", updateDef);
b.修改Title字段
var update = Builders<News>.Update.Set(m => m.title, "好大的新闻");bool updateResult = MongoDBServiceFactory.CreateMongoDBService(conStr, databaseName).UpdateOne("News", x => x._id == "95565797-8572-4281-b6e6-6820d0c8dc37", update);
c.根据userId更新一条子评论的comments字段
1 //找到子文档 2 var a = Builders<News>.Filter.Eq(x => x._id, "95565797-8572-4281-b6e6-6820d0c8dc37"); 3 var b = Builders<News>.Filter.ElemMatch(x => x.comments, y => y.userId == 1); 4 var filter = Builders<News>.Filter.And(new FilterDefinition<News>[] { a, b }); 5 //更新子文档的字段 6 var field = new StringFieldDefinition<News, string>("comments.$.comments"); 7 var update = Builders<News>.Update.Set(field, "修改后的我"); 8 //更新库 9 UpdateResult updateResult = MongoDBServiceFactory.CreateMongoDBService(conStrNo, databaseName).DocumentUpdate("News", filter, update); 10 bool bupdateResult= updateResult != null && updateResult.ModifiedCount > 0 && updateResult.ModifiedCount == updateResult.MatchedCount ? true : false;
5.删除
bool delete = MongoDBServiceFactory.CreateMongoDBService(conStr, databaseName).Delete<News>("News", x => x._id == "95565797-8572-4281-b6e6-6820d0c8dc37") > 0;
转载于:https://www.cnblogs.com/cnki/p/6101597.html
MongoDB探索之路(二)——系统设计之CRUD相关推荐
- MongoDB 教程二: 添加, 删除,查询 shell命令
视频:MongoDB 教程二: 添加, 删除,查询 shell命令 MongoDB Shell 常用操作命令 MonoDB shell命令操作语法和JavaScript很类似,其实控制台底层的查询 ...
- MongoDB聚合(二)
2019独角兽企业重金招聘Python工程师标准>>> MongoDB聚合(二)2.3 $group $group操作可以将文档根据给定字段的不同值进行分组. 如果选定了需要分组的字 ...
- 用pymongo对mongoDB增删改查(CRUD)
pymongo操作mongoDB的增删改查 | CRUD pymongo简介 连接本地mongoDB 连接远程MongoDB 数据库CRUD 使用现有数据库 增 删 改 查 集合CRUD 增 删 改 ...
- python mongodb orm_Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD
一. 在python脚本中, 我们通常可以使用pymongo模块实现与mongodb数据库的交互, 但是在使用Django框架进行定制开发的web server 项目中, 仍然使用pymongo模块的 ...
- mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...
- 大前端养成之路:学一点MongoDB(二)
MongoDB数据建模 MongoDB数据建模是使用MongoDB进行数据存储和管理的重要环节.下面将分为三部分,分别是数据建模基础知识.MongoDB数据建模原则以及数据建模案例实战.同时,还将使用 ...
- SpringBoot整合MongoDB数据库并实现基础CRUD
MongoDB安装教程:MongoDB数据库安装以及将MongoDB设置为系统服务 MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写.旨为WEB应用提供可扩展的高性 ...
- mongodb 结果二次调用_mongodb慢查询记录
在 MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是MongoDatabase Profiler.不仅有,而且还有一些比MySQL的 ...
- mongodb教程二
MongoDB 创建数据库: MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 如果你想查看所有数据库,可以使用 ...
最新文章
- 如何成为月入过万的斜杠青年
- MFC Ribbon风格界面去掉左上的Quick Access Toolbar小三角
- 软件测试——等价类划分
- ios之UIImageView
- Mina框架项目运用
- 理解SQL SERVER中的分区表
- Mysql中的行级锁、表级锁、页级锁
- ffmpeg最新源代码(定期更新)
- 微信浏览器中IOS12键盘回弹的问题
- 11. 判断是给属性前加typeof 可以同时判断属性是否存在
- 【文献翻译】基于CVSS的IT系统网络安全风险定量评估方法-A Quantitative CVSS-Based Cyber Security Risk Assessment Methodology
- 常用开发工具及常用DOS命令
- 计算机中丢失glut.dll,OpenGl的源程序,运行就提示,计算机丢失 glut32.dll文件
- 类型类 V.S. 桥接模式:撞衫不可怕,谁丑谁尴尬
- 一篇文章带你吃透VUE响应式原理
- 假如当初知道skycc营销软件是不是比现在好
- 鸡声茅店月,人迹板桥霜;莫道君行早,更有早行人
- 【转】草根老师的 linux字符设备驱动详解
- [Python] Python 获取中文的首字母 和 全部拼音首字母
- 用户体验设计—影响定制化设计的因素