目标框架必须是 4.5以上,最新MongoDb.Driver 是 2.2.4(与MongoDb.Driver 的1.x版本差别较大)

官方文档

http://mongodb.github.io/mongo-csharp-driver/2.2/

1)MongoDbContext类

internal class MongoDbContext
{
private readonly IMongoDatabase _database;

public MongoDbContext()
: this(
ConfigurationManager.AppSettings["MongoDbConnection"],
ConfigurationManager.AppSettings["MongoDbDatabase"])
{
}

public MongoDbContext(string connStr, string dbName)
{
if (string.IsNullOrEmpty(connStr) || string.IsNullOrEmpty(dbName))
throw new ArgumentNullException("MongoDbq连接信息有错误!");
var client = new MongoClient(connStr);
_database = client.GetDatabase(dbName);
}

public IMongoCollection<T> Collection<T>(string tableName="Activity")
{
return _database.GetCollection<T>(tableName);
}

}

2) 数据增删改查接口类

All the create, read, update, and delete (CRUD) operations take a similar form and are defined on theIMongoCollection<TDocument> interface.

public interface IMongoDbDao<T> where T : class,new()
{

/// <summary>
/// 获取一条记录
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
T GetOne(Expression<Func<T, bool>> whereLambda);

/// <summary>
/// 获取多条记录
/// </summary>
/// <returns></returns>
IEnumerable<T> GetList();

/// <summary>
/// 获取多条记录
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
IEnumerable<T> GetList(Expression<Func<T, bool>> whereLambda);

/// <summary>
/// 增加
/// </summary>
/// <param name="entity"></param>
void Insert(T entity);

/// <summary>
/// 批量增加
/// </summary>
/// <param name="entitys"></param>
void InsertMany(IEnumerable<T> entitys);

/// <summary>
/// 更新一个实体
/// </summary>
/// <param name="entity"></param>
void Update(T entity);

/// <summary>
/// 删除一个实体
/// </summary>
/// <param name="whereLambda"></param>
void Remove(Expression<Func<T, bool>> whereLambda);

/// <summary>
/// 统计数量
/// </summary>
/// <param name="whereLambda"></param>
long Count(Expression<Func<T, bool>> whereLambda);
}

3)MongoDb增删改查实现类

public class MongoDBService<T> : IMongoDbDao<T> where T : class,new()
{
MongoDbContext mc = new MongoDbContext();

/// <summary>
/// 查询符合条件的集合
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public IEnumerable<T> GetList( )
{
return mc.Collection<T>() .AsQueryable();

//var query = Query<T>.Where(o => true);
//return mc.Collection<T>().Find(query);
}

/// <summary>
/// 查询符合条件的集合
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public IEnumerable<T> GetList(Expression<Func<T, bool>> whereLambda)
{
return mc.Collection<T>().Find(whereLambda).ToList();
//var query = Query<T>.Where(whereLambda);
//return mc.Collection<T>().Find(query);
}

/// <summary>
/// 查询一条记录
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public T GetOne(Expression<Func<T, bool>> whereLambda)
{
return mc.Collection<T>().Find(whereLambda).FirstOrDefault();
//var query = GetList(whereLambda).FirstOrDefault();
//return query;
}

/// <summary>
/// 增加
/// </summary>
/// <param name="entity"></param>
public void Insert(T entity)
{

mc.Collection<T>().InsertOne(entity);
}

/// <summary>
/// 批量增加
/// </summary>
/// <param name="entitys"></param>
public void InsertMany(IEnumerable<T> entitys)
{
mc.Collection<T>().InsertMany( entitys);
}

/// <summary>
/// 更新一个实体
/// </summary>
/// <param name="entity"></param>
public void Update(T entity)
{
return;
// var filter = Builders<BsonDocument>.Filter.Eq("counter", 1);
//var updated = Builders<BsonDocument>.Update.Set("counter", 110);
//var result = collection.UpdateOneAsync(filter, updated).Result;
// Builders<BsonDocument>.Filter.Eq("")
// mc.Collection<T>().UpdateMany(whereLambda);

// mc.Collection<T>().UpdateOne(entity);
// mc.Collection<T>().Save(entity);
}

/// <summary>
/// 删除
/// </summary>
/// <param name="whereLambda"></param>
public void Remove(Expression<Func<T, bool>> whereLambda)
{
mc.Collection<T>().DeleteMany(whereLambda);
//var query = Query<T>.Where(whereLambda);
//mc.Collection<T>().Remove(query);
}

/// <summary>
/// 删除
/// </summary>
/// <param name="whereLambda"></param>
public long Count(Expression<Func<T, bool>> whereLambda)
{
//var query = Query<T>.Where(whereLambda);
return mc.Collection<T>().Count(whereLambda);
}
}

4)调用

static void Main(string[] args)
{
IMongoDbDao<BsonDocument> service=new MongoDBService<BsonDocument>();
var a= service.GetList();
Console.Read();
}

MongoDb学习1的更多相关文章

  1. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  2. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  3. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  4. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  5. PHP操作MongoDB学习笔记

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

  6. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  7. MongoDB学习:(一)MongoDB安装

    MongoDB学习:(一)MongoDB安装 MongoDB介绍:     直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...

  8. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

  9. mongodb学习(1) 第一次开启 mongdb

    1.启动mongdb 可以设置为开机启动 mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/l ...

  10. MongoDB学习之--安全和认证

    MongoDB学习之--安全和认证 本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作: 虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个 ...

随机推荐

  1. MVC———用自定义扩展类实现验证

    废话少说,直接上图 →_→ NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12 NO.13 NO.14 NO.15 NO.16 ...

  2. PagerAdapter 用法

    PagerAdapter简介 PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdap ...

  3. SharedPreferences保存数据

    1.使用SharedPreferences保存数据方法如下: //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences= ...

  4. #查看Linux的版本信息

    查看Ubuntu的版本信息 cat /etc/issue lsb_release -a 查看Centos的版本信息 cat /etc/centos-release rpm -q centos-rele ...

  5. iOS开发小技巧--TextField的细节处理,键盘中return键的处理

    一.TextField取消自动纠错和设置自身对应键盘的return键盘的样式 二.程序运行过程中,监听return键点击,实现相应操作

  6. 【BZOJ 4104】【Thu Summer Camp 2015】解密运算

    http://www.lydsy.com/JudgeOnline/problem.php?id=4104 网上题解满天飞,我也懒得写了 #include<cstdio> #include& ...

  7. 「个人vim插件+配置」

    2016.10.4 filetype indent on syntax on set nu ai ci si set sw= ts= set autochdir set backspace= colo ...

  8. 第6届蓝桥杯javaA组第7题,牌型种数,一道简单的题带来的思考

    题目: 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到 ...

  9. 【BZOJ-1040】骑士 树形DP + 环套树 + DFS

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3312  Solved: 1269[Submit][Status ...

  10. 【bzoj2152】 聪聪可可

    http://www.lydsy.com/JudgeOnline/problem.php?id=2152 (题目链接) 题意 给出一棵n个节点的带权树,求有多少点对的距离是3的倍数. solution ...