1.构造实体类

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EM.Model
{
public class News
{
public string _id { get; set; }
public string title { get; set; }
public string url { get; set; }
public string author { get; set; }
public int vote_count { get; set; }
public List<string> tags { get; set; }
public image image { get; set; }
public List<comments> comments { get; set; }
public DateTime createTime { get; set; }
public DateTime updateTime { get; set; }
}
public class image
{
public string url { get; set; }
public string caption { get; set; }
public string type { get; set; }
public string size { get; set; }
public string data { get; set; }
}
public class comments
{
public int userId { get; set; }
public string user { get; set; }
public string text { get; set; }
public DateTime createTime { get; set; }
public DateTime updateTime { get; set; }
} }

2.增加一条记录

             News news = new News();
news._id = Guid.NewGuid().ToString();
news.title = "大新闻";
news.url = "http://www.cnblogs.com/cnki/";
news.author = "沐风";
news.vote_count = ;
List<string> tagsList = new List<string>() { "国际", "编程", "dota" };
news.tags = tagsList;
image img = new image();
img.url = "http://www.cnblogs.com/cnki/";
img.caption = "好图";
img.type = "回忆录";
img.size = "3M";
img.data = "dota三人组";
news.image = img; List<comments> commentsList = new List<EM.Model.comments>();
comments comment1 = new comments();
comment1.userId = ;
comment1.user = "三生石";
comment1.text = "你所有的努力,只是为了更好的衬托别人的成功。";
comment1.createTime = DateTime.Now;
comment1.updateTime = DateTime.Now;
commentsList.Add(comment1); comments comment2 = new comments();
comment2.userId = ;
comment2.user = "影魔";
comment2.text = "明明可以靠脸吃饭,他却偏要靠才华,最后还是饿死了。";
comment2.createTime = DateTime.Now;
comment2.updateTime = DateTime.Now;
commentsList.Add(comment2); news.comments = commentsList; news.createTime = DateTime.Now;
news.updateTime = DateTime.Now; 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" : ,
"tags" : [
"国际",
"编程",
"dota"
],
"image" : {
"url" : "http://www.cnblogs.com/cnki/",
"caption" : "好图",
"type" : "回忆录",
"size" : "3M",
"data" : "dota三人组"
},
"comments" : [
{
"userId" : ,
"user" : "三生石",
"text" : "你所有的努力,只是为了更好的衬托别人的成功。",
"createTime" : ISODate("2016-12-05T13:40:46.142Z"),
"updateTime" : ISODate("2016-12-05T13:40:46.142Z")
},
{
"userId" : ,
"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")
}

增加一条评论

             comments commentsInfo = new comments();
commentsInfo.userId = ;
commentsInfo.user = "mf";
commentsInfo.text = "世界太美好";
commentsInfo.createTime = DateTime.Now;
commentsInfo.updateTime = DateTime.Now;
var update = Builders<News>.Update.Push(m => m.comments, commentsInfo);
bool bUpdateOne = MongoDBServiceFactory.CreateMongoDBService(conStrNo, databaseName).UpdateOne<News>("News", m => m._id == "95565797-8572-4281-b6e6-6820d0c8dc37", update);

结果

 {
"_id" : "95565797-8572-4281-b6e6-6820d0c8dc37",
"title" : "大新闻",
"url" : "http://www.cnblogs.com/cnki/",
"author" : "沐风",
"vote_count" : ,
"tags" : [
"国际",
"编程",
"dota"
],
"image" : {
"url" : "http://www.cnblogs.com/cnki/",
"caption" : "好图",
"type" : "回忆录",
"size" : "3M",
"data" : "dota三人组"
},
"comments" : [
{
"userId" : ,
"user" : "三生石",
"text" : "你所有的努力,只是为了更好的衬托别人的成功。",
"createTime" : ISODate("2016-12-05T13:40:46.142Z"),
"updateTime" : ISODate("2016-12-05T13:40:46.142Z")
},
{
"userId" : ,
"user" : "影魔",
"text" : "明明可以靠脸吃饭,他却偏要靠才华,最后还是饿死了。",
"createTime" : ISODate("2016-12-05T13:40:46.142Z"),
"updateTime" : ISODate("2016-12-05T13:40:46.142Z")
},
{
"userId" : ,
"user" : "mf",
"text" : "世界太美好",
"createTime" : ISODate("2016-12-05T13:44:16.831Z"),
"updateTime" : ISODate("2016-12-05T13:44:16.832Z")
}
],
"createTime" : ISODate("2016-12-05T13:40:46.142Z"),
"updateTime" : ISODate("2016-12-05T13:40:46.142Z")
}

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字段

             //找到子文档
var a = Builders<News>.Filter.Eq(x => x._id, "95565797-8572-4281-b6e6-6820d0c8dc37");
var b = Builders<News>.Filter.ElemMatch(x => x.comments, y => y.userId == );
var filter = Builders<News>.Filter.And(new FilterDefinition<News>[] { a, b });
//更新子文档的字段
var field = new StringFieldDefinition<News, string>("comments.$.comments");
var update = Builders<News>.Update.Set(field, "修改后的我");
//更新库
UpdateResult updateResult = MongoDBServiceFactory.CreateMongoDBService(conStrNo, databaseName).DocumentUpdate("News", filter, update);
bool bupdateResult= updateResult != null && updateResult.ModifiedCount > && 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;

  

MongoDB探索之路(二)——系统设计之CRUD的更多相关文章

  1. [MongoDB]MongoDB与JAVA结合使用CRUD

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  2. MongoDB(二)-- Java API 实现增删改查

    一.下载jar包 http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ 二.代码实现 package com.xbq.mongo ...

  3. MongoDB Sharding(二) -- 搭建分片集群

    在上一篇文章中,我们基本了解了分片的概念,本文将着手实践,进行分片集群的搭建 首先我们再来了解一下分片集群的架构,分片集群由三部分构成: mongos:查询路由,在客户端程序和分片之间提供接口.本次实 ...

  4. Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD

    一. 在python脚本中, 我们通常可以使用pymongo模块实现与mongodb数据库的交互, 但是在使用Django框架进行定制开发的web server 项目中, 仍然使用pymongo模块的 ...

  5. 玩转mongodb(二):mongodb基础知识

    常用基本数据类型: null null用于表示空值或者不存在的字段: {"data":null} 布尔型 布尔类型只有两个值,true和false: {"data&quo ...

  6. NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具

    业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装  NoSQL Manager for MongoDB 可 ...

  7. MongoDB之二基础入门(安装启动)

    mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”. 一. 下载 上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了 ...

  8. MongoDB之二(增删查改)

    一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value 可能是“字符串”,可能是“数组” ...

  9. spring集成mongodb封装的简单的CRUD

    1.什么是mongodb         MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB是一个介 ...

随机推荐

  1. docker 部署Spring Boot:Docker化Spring Boot应用程序

    第一章 1.创建项目存放目录 mkdir /root/sproot -p 2.准备好Spring Boot应用程序 jar 包 testrest.jar 第二章 1. 安装docker 在所有节点执行 ...

  2. 从头到尾谈一下HTTPS

    引言 “你能谈一下HTTPS吗?” “一种比HTTP安全的协议.” “...” 如果面试这样说的话那差不多就gg了,其实HTTPS要展开回答的话内容还挺丰富的.本篇文章详细介绍了HTTPS是什么.为什 ...

  3. mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误

    Navicat Premium 12 链接MySQL8.0.11数据库报2059错误 1,问题现象 安装完MySQL8.0.11和Navicat Premium12后,我们会用Navicat去测试连接 ...

  4. PAT甲题题解-1064. Complete Binary Search Tree (30)-中序和层次遍历,水

    由于是满二叉树,用数组既可以表示父节点是i,则左孩子是2*i,右孩子是2*i+1另外根据二分搜索树的性质,中序遍历恰好是从小到大排序因此先中序遍历填充节点对应的值,然后再层次遍历输出即可. 又是一道遍 ...

  5. [2017BUAA软工助教]剩余个人作业与deadline

    软件工程剩余作业与deadline 标签(空格分隔): 软件工程 一.个人阅读作业+总结 对软件工程的学习做一个总结. 阅读下列关于软件开发本质和开发方法的博客/文章,结合自己在个人项目/结对编程/团 ...

  6. 关于java中指针的概念

    今天寡人遇到一个问题,扫描非关系数据库中的图(由node和rel组成),将其转化成由寡人自定义的gnode和gedge组成的图. gnode类包含结点的id,label和包含此gnode的gedge的 ...

  7. 我的IT未来

    关于IT这个行业,我是持欣赏态度的,毕竟发展很快,对人们生活的改变也很大,所以,作为一个从事IT的人士,我很自豪. 读了刘先生的文章,我发现以前自己做的太少了,虽然偶尔也会吐血写程序,但还是太少了.以 ...

  8. Office处理

    1.NPOI:一个开源项目,不需要安装Microsoft Office,支持对Office 97-2003,2007文件格式,功能比较强大. http://npoi.codeplex.com/ 2.a ...

  9. 从零开始学Kotlin-使用接口(7)

    从零开始学Kotlin基础篇系列文章 定义接口 使用关键字interface定义接口 interface InterfaceDemo7 { } 类或对象可以实现一个或者多个接口 class demo7 ...

  10. c# 行转列

    将下面表(1)格式的数据转换为表(2)格式的数据.很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且 ...