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. Category Theory: 01 One Structured Family of Structures

    Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...

  2. python基础面试题

    函数1def foo(arg,li=[]): li.append(arg) return li list1 = foo(21) list2 = foo(11,[2]) list3 = foo(28) ...

  3. Bitcoin区块验证

    目录 区块的生成 区块的验证链接 验证过程 Merkle Tree结构 区块的生成 矿工在挖矿前要组建区块 将coinbase交易打包进区块 将交易池中高优先级的交易打包进区块 优先级 = 交易的额度 ...

  4. PAT甲题题解-1109. Group Photo (25)-(模拟拍照排队)

    题意:n个人,要拍成k行排队,每行 n/k人,多余的都在最后一排. 从第一排到最后一排个子是逐渐增高的,即后一排最低的个子要>=前一排的所有人 每排排列规则如下: 1.中间m/2+1为该排最高: ...

  5. 《实时控制软件设计》之Automation Studio开发环境

    Automation Studio是贝加莱公司的控制软件开发平台,软件可运行在贝加莱的基于PC的控制器上,基于Automation Studio我们可构建一个完整的控制软件构建.测试和仿真运行平台.本 ...

  6. 代理 ip

    利用 VPN 技术通过一台服务器将自己的电脑冒名借用这个服务器的ip ,这台服务器的 ip 即为代理 ip,被冒名ip的服务器即为 代理服务器.我猜的. 实验 这次使用的是 芝麻软件 代理ip软件,其 ...

  7. Opendaylight的Carbon(碳)版本安装

    Opendaylight Carbon(碳)版本安装 1.更新源 sudo apt-get update sudo apt-get upgrade 2.安装JDK1.8 sudo apt-get in ...

  8. Android实现Service永久驻留

    说实话,这是一种流氓行为.但有些时候又是不得不需要的.比如微信的NotifyReceiver.现在抛开这些伦理的东西不讲,我们只是来看看技术上怎么实现.在后台运行的service有几个途径可以将其停止 ...

  9. WBS功能分解及甘特图

    产品 一级子功能 二级子功能 三级子功能 时间(小时)  食物链教学工具 属性面板 功能按键 选择环境 1       自定义生物 2       生物连线与删除 5       显示食物链 1   ...

  10. Java对中文进行排序

    对中文进行排序,同样是得定义一个Comparator,下面上代码: import java.text.Collator; import java.util.ArrayList; import java ...