【MonogDB帮助类】
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
MongoDB;
using
MongoDB.Configuration;
using
System.Linq.Expressions;
namespace
Helper
{
/// <summary>
/// samus驱动 db通用类
/// </summary>
/// <typeparam name="T"></typeparam>
public
class
MongoDBHelper<T> where T :
class
{
#region property
private
const
string
databaseName =
"Mongodb_DataManager"
;
private
Mongo mongo;
private
MongoDatabase mongoDatabase;
private
MongoCollection<T> mongoCollection;
#endregion
#region 构造
public
MongoDBHelper(
string
name)
{
mongo = GetMongo();
mongoDatabase = mongo.GetDatabase(databaseName)
as
MongoDatabase;
mongoCollection = mongoDatabase.GetCollection<T>(name)
as
MongoCollection<T>;
mongo.Connect();
}
public
MongoDBHelper()
{
mongo = GetMongo();
mongoDatabase = mongo.GetDatabase(databaseName)
as
MongoDatabase;
mongoCollection = mongoDatabase.GetCollection<T>()
as
MongoCollection<T>;
mongo.Connect();
}
~MongoDBHelper()
{
mongo.Disconnect();
}
#endregion
#region 配置Mongo,将类UserInfo映射到集合
/// <summary>
/// 配置Mongo,将类UserInfo映射到集合
/// </summary>
private
Mongo GetMongo()
{
var config =
new
MongoConfigurationBuilder();
config.Mapping(mapping =>
{
mapping.DefaultProfile(profile =>
{
profile.SubClassesAre(t => t.IsSubclassOf(
typeof
(T)));
});
mapping.Map<T>();
});
config.ConnectionString(connectionString);
return
new
Mongo(config.BuildConfiguration());
}
#endregion
#region methods
#region add
/// <summary>
/// 新增
/// </summary>
/// <param name="t"></param>
public
void
Insert(T t)
{
mongoCollection.Insert(t);
}
/// <summary>
/// 新增
/// </summary>
/// <param name="t"></param>
public
void
Insert(T t,
bool
b)
{
mongoCollection.Insert(t,b);
}
#endregion
#region update
/// <summary>
/// 更新
/// </summary>
/// <param name="t"></param>
public
void
Insert(T t, Expression<Func<T,
bool
>> func)
{
mongoCollection.Update(t, func,
true
);
}
#endregion
#region delete
/// <summary>
/// 删除
/// </summary>
/// <param name="t"></param>
public
void
Delete(Expression<Func<T,
bool
>> func)
{
mongoCollection.Remove(func);
}
#endregion
#region search
/// <summary>
/// 查询单条数据
/// </summary>
/// <returns></returns>
public
T SelectOne(Document spec)
{
return
mongoCollection.FindOne(spec);
}
public
T SelectOne(Expression<Func<T,
bool
>> func)
{
return
mongoCollection.Linq().FirstOrDefault(func);
}
/// <summary>
/// 查询集合数据
/// </summary>
/// <returns></returns>
public
List<T> SelectMore(Document spec)
{
return
mongoCollection.Find(spec).Documents.ToList();
}
public
List<T> SelectMore(Expression<Func<T,
bool
>> func)
{
return
mongoCollection.Linq().Where(func).ToList();
}
/// <summary>
/// Cursor查询所有
/// </summary>
/// <returns></returns>
public
Cursor SelectALl2Cursor()
{
return
(Cursor)mongoCollection.FindAll();
}
/// <summary>
/// linq查询所有
/// </summary>
/// <returns></returns>
public
List<T> SelectALl()
{
return
mongoCollection.Linq().ToList();
}
/// <summary>
/// 求最大最小值
/// </summary>
/// <param name="fieldname"></param>
/// <param name="order"></param>
/// <returns></returns>
public
T selectMaxMin(
string
fieldname, IndexOrder order)
{
return
mongoCollection.FindAll().Sort(fieldname, order).Limit(1).Documents.FirstOrDefault();
}
/// <summary>
/// MapReduce
/// </summary>
/// <param name="MapFunc"></param>
/// <param name="ReduceFunc"></param>
/// <returns></returns>
public
void
CreateMapReduce(
string
MapFunc,
string
ReduceFunc,
string
outcollection)
{
mongoCollection.MapReduce()
.Map(MapFunc)
.Reduce(ReduceFunc)
.Out(outcollection);
}
#endregion
#endregion
}
}
【MonogDB帮助类】的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
随机推荐
- jQuery-简单理解
1.概念 jQuery是js的一个类库,主要封装的是js中DOM操作部分,使用和原生js一样 2.代码展示 HTML部分 封装原理 test测试 JS部分 //声明对象 var bjsxt = {}; ...
- Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)
1.简介 在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,因此这篇文章宏哥主要介绍了jmeter连接和创建数据库测试计划的过程,宏哥在文中通过示例和代码非 ...
- Rocket - tilelink - RegionReplicator
https://mp.weixin.qq.com/s/XZVCdt50tM6lavchGm9GRg 简单介绍RegionReplicator的实现. 1. 基本介绍 根据mask ...
- Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶 ...
- Java实现 LeetCode 127 单词接龙
127. 单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规则: 每次转换只能改变一个字 ...
- Java中IO软件包的详细介绍
一.Java Io流 Java Io流的概念 java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作.在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为" ...
- Java实现台阶问题
1 问题描述 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法. 2 解决方案 2.1 递归法 如果整个台阶只有1级,则显然只有一种跳法.如果台阶有2级,则有两种跳法:一种是分 ...
- Jmeter用beanshell将相应中的参数写入到本地文件中
实现效果: 将每次请求的指定参数写入到本地csv文件中. 实际场景:将登录请求中,服务器返回的token值获取并写入到本地csv文件中,供其他接口调用.这样在压测单接口时,不需要再进行登录,避免压测单 ...
- set基本运用
/* set集合基本用法 */ #include<iostream> #include<set> using namespace std; //set<T>a; v ...
- Oracle RMAN各类压缩算法对比测试
1.背景概述 2.本次测试环境基本信息 3.测试步骤 3.1. 使用BCO进行压缩备份 3.2. 不使用压缩备份 3.3. 使用ACO中LOW级别进行压缩备份 3.4. 使用ACO中MEDIUM级别进 ...