【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 ...
随机推荐
- 利用Python网络爬虫采集天气网的实时信息—BeautifulSoup选择器
相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10-20 ...
- Rocket - tilelink - Edges
https://mp.weixin.qq.com/s/UggNsNOeEMP-GhzlLiT-qQ 简单介绍Edges的实现. 1. TLEdge 包含client和manage ...
- Java实现 LeetCode 554 砖墙(缝隙可以放在数组?)
554. 砖墙 你的面前有一堵方形的.由多行砖块组成的砖墙. 这些砖块高度相同但是宽度不同.你现在要画一条自顶向下的.穿过最少砖块的垂线. 砖墙由行的列表表示. 每一行都是一个代表从左至右每块砖的宽度 ...
- Java实现 LeetCode 479 最大回文数乘积
479. 最大回文数乘积 你需要找到由两个 n 位数的乘积组成的最大回文数. 由于结果会很大,你只需返回最大回文数 mod 1337得到的结果. 示例: 输入: 2 输出: 987 解释: 99 x ...
- Java实现 蓝桥杯 算法提高 P0101
算法提高 P0101 时间限制:1.0s 内存限制:256.0MB 提交此题 一个水分子的质量是3.0*10-23克,一夸脱水的质量是950克.写一个程序输入水的夸脱数n(0 <= n &l ...
- Java实现蓝桥杯算法提高12-2扑克排序
扑克牌排序 问题描述 扑克牌排序:构造扑克牌数组,对扑克牌进行排序. 排序原则如下:数字从小到大是2-10.J.Q.K和A,花色从小到大是方块(diamond).梅花(club).红桃(heart). ...
- Java实现 LeetCode 16 最接近的三数之和
16. 最接近的三数之和 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存 ...
- java实现括号的匹配
括号的匹配 下面的代码用于判断一个串中的括号是否匹配 所谓匹配是指不同类型的括号必须左右呼应,可以相互包含,但不能交叉 例如: -(-[-]-)- 是允许的 -(-[-)-]- 是禁止的 对于 mai ...
- 阿里云杨敬宇:边缘计算行业通识与阿里云ENS的技术演进之路
近日,阿里云杨敬宇在CSDN阿里云核心技术竞争力在线峰会上进行了<5G基础设施-阿里云边缘计算的技术演进之路>主题演讲,针对5G时代下,行业和技术的趋势.边缘计算产业通识以及阿里云边缘计算 ...
- 红楼梦 + 写入 MySQL
import requests import re import pymysql from bs4 import BeautifulSoup conn = pymysql.Connect(host=' ...