public class MongoDBHelper
{ //定义Mongo服务
private MongoServer mongo = null;
//获取databaseName对应的数据库,不存在则自动创建
private MongoDatabase mongoDatabase; /// <summary>
/// Mongo 数据库连接
/// </summary>
public MongoDBHelper()
{
mongo = MongoServer.Create(MongoDBConfig.gConnectionString);
mongoDatabase = mongo.GetDatabase(MongoDBConfig.gDatabaseName) as MongoDatabase;
mongo.Connect();
} /// <summary>
/// Mongo 数据库断开连接
/// </summary>
public void CloseConnection()
{
if (this.mongo != null)
{
this.mongo.Disconnect();
this.mongo = null;
}
} /// <summary>
/// 根据条件查找所有记录
/// </summary>
/// <returns></returns>
public IEnumerable<BsonDocument> FindAll(IMongoQuery pQuery,int currentpage,int pagesize, string pTable)
{
//获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
return mongoCollection.Find(pQuery).SetLimit(pagesize).SetSkip(pagesize * currentpage).ToList(); ;
} /// <summary>
/// 查找所有记录
/// </summary>
/// <returns></returns>
public IEnumerable<BsonDocument> FindAll(int currentpage,int pagesize,string pTable)
{
//获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
return mongoCollection.FindAll().SetLimit(pagesize).SetSkip(pagesize*currentpage).ToList();
} /// <summary>
/// 根据条件查找所有记录
/// </summary>
/// <returns></returns>
public IEnumerable<BsonDocument> FindAll(IMongoQuery pQuery, string pTable)
{
//获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
return mongoCollection.Find(pQuery);
} /// <summary>
/// 查找所有记录
/// </summary>
/// <returns></returns>
public IEnumerable<BsonDocument> FindAll(string pTable)
{
//获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
return mongoCollection.FindAll();
} /// <summary>
/// 增加一条记录
/// </summary>
/// <param name="doc"></param>
public void Add(object obj, string pTable)
{ //获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
mongoCollection.Insert(obj);
}
/// <summary>
/// 删除一条记录
/// </summary>
public void Delete(string id, string pTable)
{ //获取collectionName对应的集合,不存在则自动创建
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>;
mongoCollection.Remove(new QueryDocument { { "_id", id } });
} #region 获取当前连接数据库的指定集合【依据类型】
/// <summary>
/// 获取当前连接数据库的指定集合【依据类型】
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public MongoCollection<T> GetCollection<T>(string name,WriteConcern writeConcern) where T : class
{
return this.mongoDatabase.GetCollection<T>(name,writeConcern);
} /// <summary>
/// 获取当前连接数据库的指定集合【根据指定名称】
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="name">集合名称</param>
/// <returns></returns>
public MongoCollection<T> GetCollection<T>(string pTableName) where T : class
{
return this.mongoDatabase.GetCollection<T>(pTableName);
} #endregion #region GridFs 文件处理 /// <summary>
/// 保存2进制数据到db里面
/// </summary>
/// <param name="byteFile"></param>
/// <returns></returns>
public string GridFsSave(byte[] byteFile)
{
string filename = Guid.NewGuid().ToString();
//这里GridFile构造函数有个重载,bucket参数就是用来替换那个创建集合名中默认的"fs"的。
MongoGridFS gridFile = new MongoGridFS(mongoDatabase);
using (MongoGridFSStream gridFileStream = gridFile.Create(filename))
{
gridFileStream.Write(byteFile, 0, byteFile.Length);
}
return filename; } public void SaveGridFsFile(BsonDocument doc, string pTable)
{ MongoCollection<BsonDocument> mongoCollection =mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>; mongoCollection.Save(doc);
}
/// <summary>
/// 读取为filename的文件
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public byte[] GridFsRead(string filename)
{ MongoGridFS gridFile = new MongoGridFS(mongoDatabase);
MongoGridFSStream gridFileStream = gridFile.OpenRead(filename); byte[] bytes = new byte[gridFileStream.Length]; gridFileStream.Read(bytes, 0, bytes.Length); return bytes; }
/// <summary>
/// 根据条件取一条数据
/// </summary>
/// <param name="fitter"></param>
/// <param name="pTable"></param>
/// <returns></returns>
public BsonDocument GetFsFileInfo(QueryDocument fitter, string pTable)
{
MongoCollection<BsonDocument> mongoCollection = mongoDatabase.GetCollection<BsonDocument>(pTable) as MongoCollection<BsonDocument>; BsonDocument doc = mongoCollection.FindOne(fitter);
return doc;
} /// <summary>
/// 删除文件
/// </summary>
/// <param name="filename"></param>
public void GridFsDelete(string filename)
{ MongoGridFS gridFile = new MongoGridFS(mongoDatabase); gridFile.Delete(new QueryDocument("filename", filename)); }
#endregion
}

备注:由于最近使用.net开发一个项目,有机会用到了mongodb,我自己改成通用类

方法:

1.找到mongodb官网

2.下载mongodb.net的类库,我用的是MongoDB.Bson.dll,MongoDB.Driver.dll的1.7版本,每个版本还不一样.....mongodb对语言访问支持正在加强.

3.以上是底层代码

[总结].net操作MongoDb通用基础类1:的更多相关文章

  1. java操作mongodb & springboot整合mongodb

    简单的研究原生API操作MongoDB以及封装的工具类操作,最后也会研究整合spring之后作为dao层的完整的操作. 1.原生的API操作 pom.xml <!-- https://mvnre ...

  2. Node操作MongoDB并与express结合实现图书管理系统

    Node操作MongoDB数据库 原文链接:http://www.xingxin.me/ Web应用离不开数据库的操作,我们将陆续了解Node操作MongoDB与MySQL这是两个具有代表性的数据库, ...

  3. MongoDB学习-->命令行增删改查&JAVA驱动操作Mongodb

    MongoDB 是一个基于分布式文件存储的数据库. 由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关 ...

  4. MongoDB学习【四】—pymongo操作mongodb数据库

    一.pymongodb的安装 Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip安装 pip 是一个通用的 Python 包管理工具, ...

  5. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  6. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  7. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  8. PHP操作Mongodb之增删改查篇

    之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...

  9. PHP操作Mongodb之高级查询篇

    本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...

随机推荐

  1. linux 中的局部变量、全局变量、shell 变量的总结

    系统局部变量和全局变量  一.变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用 ...

  2. 配置web应用

    web应用配置虚拟主机1.web应用的虚拟路径映射,就是web应用的真实存在的路径配置一个虚拟路径 在conf目录下的Server.xml 的<Host>标签中,配置<Context ...

  3. c/c++面试30-38之指针

    30 看代码写结果-----指针加减 #include <stdio.h> int main(void) { ] = { , , , , }; );//这里要特别注意,&a+1的值 ...

  4. 3-C++程序的结构1.1

    数据的共享和保护机制是C++的重要特性之一. 1.标识符的作用域与可见性 作用域讨论的是标识符的有效范围,可见性是讨论标识符是否可以被引用. a.作用域 作用域是一个标识符在程序正文中有效的区域.C+ ...

  5. .net 反射构造你自己的“匿名”对象

    由于近来项目的底层架构某些特殊需求及场景的需要要求动态build一个对象, 属性名称个类与类型都是外界动态传入的. 不多说废话,直接上我最原始的代码: public static Type GetMy ...

  6. 打造个人IP: 开源项目网站构建框架

    前言 您是否正在寻找有关如何创建博客网站: 个人博客 或者 开源项目官网 : Dubbo, Vue.js的构建框架? 在这篇文章我将向您展示如何创建一个美观并且实用的开源博客/开源项目官网构建框架!近 ...

  7. 给定一个数字n,生成n对可能的小括号组合

    示例: 输入:n为3 输出:[ "((()))", "(()())" "(())()", "()(())", " ...

  8. Shader第二十八讲 Compute Shaders

    http://blog.sina.com.cn/s/blog_471132920102w97k.html 首先简单介绍GPGPU programming 和CPU Random Memory Acce ...

  9. [Xcode 实际操作]八、网络与多线程-(4)使用UIApplication对象发送短信

    目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,发送短信的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...

  10. [Xcode 实际操作]八、网络与多线程-(12)使用异步Post方式查询IP地址信息

    目录:[Swift]Xcode实际操作 本文将演示如何通过Post请求,异步获取IP地址信息. 异步请求与同步请求相比,不会阻塞程序的主线程,而会建立一个新的线程. 在项目导航区,打开视图控制器的代码 ...