最近比较忙,很久没更新了(虽然没人看,也没人在乎,也要记得be yourself),

  前面分享了一些mongodb的安装和简单的语法,今天模仿支付宝首页的模块移动功能,用mongo做一个简单的后台实例。

  one,启动本地的mongo服务like this.

  two,连接mongo可视化界面,建立PersonModule的文档集合。

  three,配置默认模块,我这边了个公共xml里。

<?xml version="1.0" encoding="utf-8" ?>

<root>
<model name="HomePage">
<nodes name="DefaulModule">
<node id="" name="转账"/>
<node id="" name="共享单车"/>
<node id="" name="电影票"/>
<node id="" name="出行"/>
</nodes>
</model >
</root>

  four,正式开工。

    1.初始化首页模块。

     /// <summary>
/// 初始化模块
/// </summary>
public void InitModule()
{
var DefaultModule = XmlHelper.GetXmlDic("HomePage", "DefaulModule");
var personModule = new PersonalModule();
List<BsonDocument> docs = new List<BsonDocument>();
//添加id=1,2,3三个人的首页模块
for (var i = ; i < ; i++)
{
personModule.PersonId = i;
personModule.Module = DefaultModule;
//一个人一个人添加
var json = JsonHelper.SerializeObject(personModule);
//mongoServer.Insert(collationName, json);
//批量添加
BsonDocument document = BsonDocument.Parse(json);
docs.Add(document);
}
//导入mongodb
mongoServer.ImportBatch("PersonModule", docs);
}

    2.个人PersonId=1的,添加模块(Id=5,Name=“余额”)

     /// <summary>
/// 添加模块
/// </summary>
public void AddModule()
{
var arrName = "Module";
var model = new Module() { Id = , Name = "余额" };
var json = JsonHelper.SerializeObject(model);
var filter = new BsonDocument();
// 更新条件
filter.Add("PersonId", );
//集合名称,查询条件,添加的对象,需要添加的数组名称
mongoServer.UpdatePushArray(collationName, filter, json, arrName);
}

    3.移除模块,移除个人PersonId=2,id=4的模块。

     /// <summary>
/// 移除模块
/// </summary>
public void RemoveModule()
{
var arrName = "Module";
var filter = new BsonDocument();
// 更新条件
filter.Add("PersonId", );
//移除PersonId=2的数组名称为"Module",id=4的对象
var doc = new BsonDocument() {
new BsonElement(arrName,
new BsonDocument() {
new BsonElement("Id", ) })};
mongoServer.UpdatePullArray(collationName, filter, doc);
}

    4.移动或者移动并删除模块

     /// <summary>
/// 移动或者移动并移除模块
/// </summary>
public void MoveModule()
{
var arrName = "Module";
// 更新条件
var filter = new BsonDocument();
filter.Add("PersonId", );
var moduleList = new List<Module>();
moduleList.Add(new Module { Id = ,Name= "共享单车" });
moduleList.Add(new Module { Id = , Name = "转账" });
moduleList.Add(new Module { Id = , Name = "出行" });
var json = JsonHelper.SerializeObject(moduleList);
mongoServer.UpdateArray(collationName, filter, json, arrName);
}

mongoServer类。

 public class MongoServer
{
private IMongoDatabase database = null;
private string server = System.Configuration.ConfigurationManager.AppSettings["MongoServer"];
private string port = System.Configuration.ConfigurationManager.AppSettings["MongoPort"];
private string db = System.Configuration.ConfigurationManager.AppSettings["DBName"];
public MongoServer()
{
Init();
}
public void Init()
{
var client = new MongoClient($"mongodb://{server}:{port}");
database = client.GetDatabase(db);
}
     /// <summary>
/// 查询一条
/// </summary>
/// <param name="tablename"></param>
/// <param name="query"></param>
/// <returns></returns>
public string FindOne(string tablename, BsonDocument filter)
{
var collection = database.GetCollection<BsonDocument>(tablename);
var documents = collection.Find(filter).FirstOrDefault();
return documents == null ? "" : documents.ToJson();
}
/// <summary>
/// update
/// </summary>
/// <param name="collectionName"></param>
/// <param name="filter"></param>
/// <param name="update"></param>
public void Update(string collectionName, BsonDocument filter, BsonDocument update)
{
var collection = database.GetCollection<BsonDocument>(collectionName);
collection.FindOneAndUpdate(filter, update);
}
/// <summary>
/// insert
/// </summary>
/// <param name="collectionName"></param>
/// <param name="json"></param>
public void Insert(string collectionName, string json)
{
var collection = database.GetCollection<BsonDocument>(collectionName);
BsonDocument document = BsonDocument.Parse(json);
collection.InsertOne(document);
}
/// <summary>
/// delete
/// </summary>
/// <param name="collectionName"></param>
/// <param name="json"></param>
public void Delete(string collectionName, BsonDocument query)
{
var collection = database.GetCollection<BsonDocument>(collectionName);
collection.FindOneAndDelete(query);
}
    /// <summary>
/// 批量导入
/// </summary>
/// <param name="collectionName"></param>
/// <param name="docs"></param>
public void ImportBatch(string collectionName, List<BsonDocument> docs)
{
var collection = database.GetCollection<BsonDocument>(collectionName);
collection.InsertMany(docs);
}
/// <summary>
/// 添加一条数组
/// </summary>
/// <param name="collectionName">集合名</param>
/// <param name="filter">条件</param>
/// <param name="json">更新内容</param>
/// <param name="arrayName">数组名</param>
public void UpdatePushArray(string collectionName, BsonDocument filter, string json, string arrayName)
{
//更新mongo简历
var update = new BsonDocument();
BsonDocument document = BsonDocument.Parse(json);
//添加doucment数组对象
update.Add("$push", new BsonDocument() { new BsonElement(arrayName, document) });
//更新修改时间
//update.Add("$set", new BsonDocument() {
// new BsonElement("",""),
// });
Update(collectionName, filter, update);
}
/// <summary>
/// 删除一条数组
/// </summary>
/// <param name="collectionName"></param>
/// <param name="filter"></param>
/// <param name="arrDoc"></param>
public void UpdatePullArray(string collectionName, BsonDocument filter, BsonDocument arrDoc)
{
//更新mongo简历
var update = new BsonDocument();
//$pull删除对象数组idName=id的对象文档
update.Add("$pull", arrDoc);
Update(collectionName, filter, update);
}
/// <summary>
/// 更新数组
/// </summary>
/// <param name="tableName"></param>
/// <param name="json"></param>
/// <param name="arrayName"></param>
public void UpdateArray(string collectionName, BsonDocument filter, string json, string arrayName)
{
//更新mongo简历
var update = new BsonDocument();
var update1 = new BsonDocument();
//删除原有数组文档
update.Set("$unset", new BsonDocument() { new BsonElement(arrayName, "") });
Update(collectionName, filter, update);
//set新的数组
json = "{ \"" + arrayName + "\" :" + json + "}";
BsonDocument document = BsonDocument.Parse(json);
update1.Set("$set", document);
Update(collectionName, filter, update1);
}
}

  最后,注意给document赋值时候的大小写问题。还有需要引用System.Runtime.InteropServices.RuntimeInformation包。

C#操作MongoDB的简单实例的更多相关文章

  1. python从入门到大神---4、python3文件操作最最最最简单实例

    python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...

  2. MongoDB分片简单实例

    分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据也足以提供可接受的读写吞吐量.这时,我 ...

  3. nodejs+mongoose操作mongodb副本集实例

    继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目     express 项目名称 2:npm install mongoose    安装mongo ...

  4. 关于MongoDB的简单理解(二)--Java篇

    一.声明 本文依赖于 MongoDB JVM DRIVERS 4.1 版本编写. 本文案例依赖于 Maven 项目管理工具. 二.本文主要讲解哪些内容? 如何连接到MongoDB 通过TLS/SSL连 ...

  5. 学习MongoDB--(11):应用举例(利用java操作MongoDB)

    原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/articl ...

  6. 学习MongoDB-应用举例(利用java操作MongoDB)

    Java驱动程序是MongoDB最早的驱动,已用于生产环境很长时间,十分稳定.可以到MongoDB官方网站下载驱动,驱动版本为2.9.0. 这个jar文件中,有两个包,我们会经常用到com.mongo ...

  7. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

  8. mongodb的简单操作记录

    由于项目上需要对mongodb进行监控,所以需要先熟悉下什么是mongobd以及mongodb的简单操作 mongodb的安装: curl -O https://fastdl.mongodb.org/ ...

  9. C# Asp.net中简单操作MongoDB数据库(二)

    C# Asp.net中简单操作MongoDB数据库(一)    , mongodb数据库连接可以回顾上面的篇幅. 1.model类: public class BaseEntity { /// < ...

随机推荐

  1. JQuery插件开发标准写法

    ;//step01 定义JQuery的作用域 (function ($) { //step03-a 插件的默认值属性 var defaults = { prevId: 'prevBtn', prevT ...

  2. 十五、Spring Boot 环境变量读取 和 属性对象的绑定

    凡是被spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时,获取到系统环境变量和application配置文件中的变量. 如: @ ...

  3. Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

    本篇博客主要用于介绍如何使用selenium+phantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*- from sel ...

  4. 关键字中mysql数据库查询条件带中文无结果解决办法

    package keyword; import java.io.UnsupportedEncodingException; import java.sql.Connection; import jav ...

  5. Hibernate学习---基本介绍+作用+配置

    从今天开始重新学习(以前学的太匆忙)Hibernate,这篇文章主要就一下几点进行讲解和说明: Hibernate的基本介绍 Hibernate的作用 Hibernate基本配置 Hibernate的 ...

  6. xcode 没有 iphone4s 模拟器 的解决方法..

    项目需要iphone 4s 测试. 首先是Xcode 8 没有 iphone 4s的模拟器了. 由于线上安装的方式,不管是在code的add simulator 还是 ruby gem 的code-i ...

  7. [置顶] MVC中使用signalR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  8. Xamarin android CardView的使用详解

    android 5.0新增加的一个控件CardView,在support v7兼容包中,意思就是卡片View,虽然可以设置阴影,圆角等等样式,但是我们也可以自己写出来,谷歌工程师之所以出这个,肯定是帮 ...

  9. C#扩展(2):Random的扩展

    在.net中关于Random一共也只有这几个方法 // // 摘要: // 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. [ComVisible(true)] public ...

  10. CDQ分治与整体二分小结

    前言 这是一波强行总结. 下面是一波瞎比比. 这几天做了几道CDQ/整体二分,感觉自己做题速度好慢啊. 很多很显然的东西都看不出来 分治分不出来 打不出来 调不对 上午下午晚上的效率完全不一样啊. 完 ...