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. Linux删除多余内核

    查看已安装内核 sudo dpkg --get-selections |grep linux-image 查看当前内核 uname -r 卸载内核 sudo apt-get remove 内核名称 配 ...

  2. LeetCode-51.N皇后

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解 ...

  3. 小学生都能写智能语音助手了,我这颗转战AI的心要何去何从?

    前言——我是不是老了 前天看了一个关于AI类的综艺节目我感觉整个人都不好了.这个综艺的名字叫<智造将来>上面那个小屁孩自己写了一个智能语音助手,这个小屁孩叫袁翊闳是2018年百度AI开发者 ...

  4. io整理

    http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html

  5. Fibbing以让虚结点的设置更简单为目的优化网络需求

  6. Linux命令学习chroot和chmode

    chroot:chang root http://man.linuxde.net/chroot https://baike.baidu.com/item/chroot 1.限制被CHROOT的使用者所 ...

  7. hao360恶意篡改IE首页——修复方法

    设置浏览器首页空白或自定义后,点击开始菜单,找到IE浏览器,右键进入属性,找到shortcut里面“目标”,你会看到里面链接到的是hao360什么乱糟糟的,这才是以上问题的关键原因.删除图1中红色内容 ...

  8. Jmeter put 方法总结

    1.百度到很多关于jmeter put 方法的使用 ,但觉得都完全 下面我大致总结下 : >1.放入 url 中 如:www.*****.com?a=1&b=2 ; >2.放入到p ...

  9. Django-基本概念

    目录 Django 项目创建 项目结构 应用目录 Django Django是一个开放源代码的Web应用框架, 由Python写成. 采用了MVC的软件设计模式, 即模型M, 视图V和控制器C. 这套 ...

  10. 使用Java语言递归删除目录下面产生的临时文件

    背景:项目copy的过程中,在项目的目录文件夹下面都产生了一个固定的文件,很是讨厌.手动删除的话比较费力,所以写了一个简单的Java程序去删除: public static void main(Str ...