MongoDB使用总结(C#版)

简介

MongoDB是非关系型、文档型的数据库,方便之处在于可以直接存取class类型……官网定期会开设Free的课程,上一个项目中使用到MongoDB,现在我做的项目用的是EF,所以想将MongoDB用过的方法、注意的事项和一些想法总结一下,毕竟,如果再次使用的话林林总总去拼凑还是要浪费时间的。

DLL

(1) MongoDB.Bson.dll

(2) MongoDB.Driver.dll

软件

很好的可视化软件,MongoVUE

方法

连接

//Mongo数据库名称
private MongoDatabase Mg_db;
//Mongo数据库集合名称
public MongoCollection Mg_col;
//MongoServer
private MongoServer mongoServer;
//连接字符串(以mongodb://开头)
string connectionString = "mongodb://localhost";//或者是192.xxx.xxx.xxx
//string constr = "mongodb://" + ip + ":" + port;       //连接ip和该port
//连接Mongo数据库
var client = new MongoClient(connectionString);
//得到一个客户端引用
mongoServer = client.GetServer();

创建数据库

Mg_db = mongoServer.GetDatabase(dbName);
//dbName是新库的名字
//如果已有dbName这个库,那Mg_db是get这个库,否则就是创建

创建表(集合)

Mg_col = Mg_db.GetCollection<T>(connectionName);
//connectionName是新表的名字
//如果该库已有connectionName这个表,那Mg_col 是get这个表,否则就是创建

在表中插入数据

public void Insert<T>(string dbName, string connectionName, T t)
   {
       Mg_db = mongoServer.GetDatabase(dbName);    //get 某个库
       MongoCollection collection = Mg_db.GetCollection<T>(connectionName);    //get该库某个表
       collection.Insert(t);   //插入(任意类型)
   }

在表中删除数据

public void delete<T>(string dbName, string connectionName, string key, BsonValue value)
{
    Mg_db = mongoServer.GetDatabase(dbName);
    Mg_col = Mg_db.GetCollection<T>(connectionName);

    var query = Query.EQ(key, value);
    //查询条件,eg:我要删除name是张三的该条数据,key,字段名,value是张三
    Mg_col.Remove(query);
}

更新表中的某一条数据

public void UpData(string dbName, string connectionName, string key, BsonValue value, People t)
{
      Mg_db = mongoServer.GetDatabase(dbName);
      Mg_col = Mg_db.GetCollection(connectionName);

      var query = Query.EQ(key, value);
      People temp = Mg_col.FindOneAs<People>(query);
      //根据查询条件获取表中People类型的数据temp,这也是我们要更新的数据
      t.id = (temp as People).id;
      //t是People类型的一条新数据,它拿到要更新数据的id

      Mg_col.Update(query, Update.Replace(t));
}

查找某个表符合条件的对象并返回

public T Find<T>(string dbName, string connectionName, string key, BsonValue value)
 {
     Mg_db = mongoServer.GetDatabase(dbName);
     MongoCollection collection = Mg_db.GetCollection<T>(connectionName);
     var query = Query.EQ(key, value);

     T result = collection.FindOneAs<T>(query);

     return result;
 }

查找某个表符合条件的对象个数

public long FindSameNameCollectionNum(string dbName, string collcetionName, string key, BsonValue value)
{
    Mg_db = mongoServer.GetDatabase(dbName);
    Mg_col = Mg_db.GetCollection(collcetionName);
    var query = Query.EQ(key, value);
    long count = Mg_col.Count(query);
    return count;
}

获取某个表中的所有对象

public List<T> GetProjectArray<T>(string dbName, string connectionName)
 {
     Mg_db = mongoServer.GetDatabase(dbName);
     Mg_col = Mg_db.GetCollection(connectionName);

     //获取该集合所有对象
     var result = Mg_col.FindAllAs<T>();
     List<T> pList = new List<T>();
     pList.AddRange(result);
     return pList;
 }

存储影音文本数据放在GridFS

MongoDB中每个库对应一个GridFS文件夹用来存放影音文本……

可以在这里用程序添加

可以直接在MongoVUE中添加

public void AddFileInGridFS(string dbName, string filePath)
{
     Mg_db = mongoServer.GetDatabase(dbName);
     MongoGridFS gridfs = Mg_db.GridFS;
     gridfs.Upload(filePath);
}

取出放在GridFS中的数据

public void LoadFileInGridFS(string dbName, string fileName)
{
    Mg_db = mongoServer.GetDatabase(dbName);
    MongoGridFS gridfs = Mg_db.GridFS;
    gridfs.Download(fileName);
}

取出放在GridFS中的数据保存在Byte[]中

public byte[] ReadFileFromfs(string dbName, string fileName, byte[] bytes)
{
    Mg_db = mongoServer.GetDatabase(dbName);
    MongoGridFS gridfs = Mg_db.GridFS;
    MongoGridFSStream gridFileStream = gridfs.OpenRead(fileName);
    bytes = new byte[gridFileStream.Length];
    gridFileStream.Read(bytes, 0, bytes.Length);
    return bytes;
}

注意事项

1.库名不可以是中文,会报错。

2.private的数据无法存入MongoDB中。

3.要存入的class,结构中添加using MongoDB.Bson;并添加 public ObjectId id { get; set; },这个id存入后自增长。

体会

1.MongoDB的结构库—-集合—-对象,这里的集合就是表,但是我说的是”集合“,以至于上面的方法中我定义的都是collection,同样的,我强调的还有对象这个概念

2.一个表可以存多种类型的数据,但是最好不要这样,读取的时候很麻烦,拆箱装箱极易错,还是一个表一种类型为好。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 16:52:41

MongoDB使用总结(C#版)的相关文章

初识Mongodb之[CURD]-PHP版

行动 在了实践之前,希望大家看一下上面的学习资源,了解一下基本操作. 数据连接初始账号密码 账号:admin 密码:admin 首先我们建立一个文件:mongodb.php,设置需要连接账号密码,连接数据库 <?php /** * Mongodb Test * * Tools: * Zend Studio 8.x * Eclipse Plug :Toggle Varpper * * @author Wu Bai Qing<[email protected]> * @version $Id

MongoDB权威指南第二版学习笔记二

数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和false {“x”:true} 数值 shell默认使用64位浮点型数值. {“x”:3.14} 或 {“x”:3} 对于整型值,可使用NumberInt类(表示4字节带符号整数)或NumberLong类(表示8字符带符号整数) {“x”:NumberInt(”3”)} {“x”:NumberLong(

MongoDB权威指南第二版学习笔记——MongoDB简介

MongoDB简介 MongoDB在功能和复杂性之间取得了很好的平衡,并且大大简化了原先十分复杂的任务,它具备支撑今天主流web应用的关键功能:索引.复制.分片.丰富的查询语法,特别灵活的数据模型.与此同时还不牺牲速度. MongoDB是一款强大.灵活,且易于扩展的通用型数据库.能扩展出非常多的功能,如二级索引.范围查询.排序.聚合,以及地理空间索引. 设计特点 易于使用 MongoDB是一个面向文档的数据库,比关系型数据库有更好的扩展性.用文档代替行.能够仅使用一条记录来表现发展的层次关系.

(转)重磅出击:MongoDB 3.0正式版即将发布

MongoDB 今天宣布 3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有非常巨大的提升,通过在存储层的大幅改进实现.内建 WiredTiger 存储引擎,这是一项难以置信的技术实现,提供无门闩.非堵塞算法来利用先进的硬件平台(如大容量芯片缓存和线程化架构)来提升性能.通过 WiredTiger ,MongoDB 3.0 实现了文档级别的并发控制,因此大幅提升了大并发下

PHP安装MongoDB扩展-Windows Wamp版

本文将讲述一下在Wamp环境下安装MongoDB扩展的过程,大家可以略作参考 Linux 版本的可以参考之前发布的PHP安装MongoDB扩展 安装环境 系统环境:Windows 7 64位 Apache版本:2.4.9 PHP版本:5.5.12 MongoDB版本:3.2.6 Wamp版本:wamp 2.5 64位 在windows下安装mongodb的扩展比Linux环境稍微复杂点 安装步骤 一.确定php的compiler 通过查看phpinfo()可以确定 从上图可以看到,Compile

win10下安装mongodb(解压版)

首先到官网下载安装包.(https://www.mongodb.com/download-center#community) 1.创建mongodb目录 2.配置文件mongodb.config 3.配置mongodb的环境变量 4.启动mongodb 到C:\Windows\System32  目录下  右击cmd 选择已管理员身份运行 原文地址:https://blog.csdn.net/luzhan521/article/details/80490085 原文地址:https://www.

MongoDB权威指南第二版学习笔记(四)—增删改文档下

$slice 如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度.$slice 的值必须是负整数. 假设$slice的值为10,如果$push 后的数组的元素个数小于10,那么所有元素都会保留.反之,只有最后那10个元素会保留.因此,$slice 可以用来在文档中创建一个队列. db.class.insert({"班级":"1班"}) WriteResult({ "nInsert

一键部署MongoDB集群Windows版

由于周末在家手头没有虚拟机,所以在windows下单机完毕部署要求,并编写bat执行脚本. 1.创建配置文件及相关文件夹 总的启动脚本例如以下(startmc.bat): rem m1 start mongod.exe --config=../config/m1/s1_1 start mongod.exe --config=../config/m1/s1_2 start mongod.exe --config=../config/m1/c1_1 start mongod.exe --config

MongoDB学习笔记(一)

最近有些时间,就抽空研究了一下MongoDB,我以前经常使用关系型数据库,如Oracle.MySQL,对MongoDB只是有些很肤浅的了解,最近下决心要好好研究一下,主要的参考书有两本:<MongoDB 大数据处理权威指南(第二版)>.<MongoDB权威指南(第一版)>,后者的版本比较旧,但基本还可以用,基本的操作方式基本上差不多.我主要参考的是第一个本书,相对来说,第一本书比较简单,但入门比较容易,还带有PHP和Python的操作MongoDB的指南. 1.安装:MongoDB

MongoDB分片集群配置实例

环境: windows操作系统 mongodb 3.4社区版 目标: 配置包含两个分片一个配置服务器的分片集群.其中每一个分片和一个配置服务器都被配置为一个单独的副本集.如下图所示: 注:每一个分片都应该被配置在一个单独的服务器设备上.方便起见,本文在同一台机器通过不同端口模拟不同服务器上的组件,实现分片集群的配置.(生产环境的配置与此相同,只需使用自己的主机名.端口.路径等即可). 下图为本文配置的分片集群架构,其中的任意节点(副本集节点和分片节点)都是可扩展的. 1.分别为config se