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. AngularJS系统学习之Module(模块)

    本文源自:http://blog.csdn.net/woxueliuyun/article/details/50962645 学习之后略有所得, 来此分享.建议看原文. 模块是提供一些特殊服务的功能块 ...

  2. 标准C++中的string

    转自http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include & ...

  3. mysql server安装(windows)

    1 在 https://dev.mysql.com/downloads/mysql/ 上下载mysql压缩包 2 解压,并把bin目录加入环境变量 3 初始化,完成后会在mysql根目录下生成data ...

  4. UVaLive 3695 Distant Galaxy (扫描线)

    题意:给平面上的 n 个点,找出一个矩形,使得边界上包含尽量多的点. 析:如果暴力那么就是枚举上下边界,左右边界,还得统计个数,时间复杂度太高,所以我们考虑用扫描线来做,枚举上下边界, 然后用其他方法 ...

  5. 609. Find Duplicate File in System

    Given a list of directory info including directory path, and all the files with contents in this dir ...

  6. Weekly Contest 78-------->810. Chalkboard XOR Game

    We are given non-negative integers nums[i] which are written on a chalkboard.  Alice and Bob take tu ...

  7. 51nod 1297

    思路: 搞个栈模拟一下,也才5w; 直接wa1了..然后想到井口如果都进不去那就...一定GG了. 所以维护一下从井口到井底是非递增的就好了: #include <cstdio> #inc ...

  8. java基础第一篇

    1.JDK:Java Development kit 能对Java程序编译,运行 包含JRE JRE:Java Runtime Environment 能对Java程序运行 包含JVM和一些核心类库 ...

  9. PostgreSQL - 用psql 运行SQL文件

    对于预先写好的SQL文件,比如/home/user1/updateMyData.sql, 可以有两种方式来运行这个SQL文件. 方式一:连接db后执行SQL文件 首先通过psql连接到对应的db: p ...

  10. IDEA 快捷键MacOS

    Alt + Enter 导入包,自动修正 Command + N 查找类 Command + Shift + N查找文件 Command + Alt + L格式化代码 Command + Alt + ...