目标框架必须是 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. Android 强制竖屏

    一般android 显示内容都有两种实现方式,java代码中实现,xml布局中实现(或者权限管理页面) 直接上代码: java方法 setRequestedOrientation(ActivityIn ...

  2. C#分割字符串

    命名空间:System.String.Split 程序集:mscorlib( mscorlib.dll) 简单实例: string before = "12,50,30"; str ...

  3. 献给那些每次调试时都要启动很多WEB项目的苦逼程序猿

    当一个解决方案包含多个WEB项目的时候,只要按F5调试,其它用不着的WEB项目也会自动添加到托盘里.很多新手都不知道如何解决这个问题,我也是刚知道. 在网上找了很多资料看到有2种解决方法: 1.把WE ...

  4. 用Okhttp框架登录之后的Cookie设置到webView中(转)

    1.webview中设置: [java] view plain copy @SuppressWarnings("deprecation") public void synCooki ...

  5. 关于mysql数据库行级锁的使用(一)

    项目上一个业务需要对某条数据库记录加锁,使用的是mysql数据库 因此做了一个关于mysql数据库行级锁的例子做测试 package com.robert.RedisTest; import java ...

  6. Spring_SpEL

    一.本文目录         简单介绍SpEL的概念和使用     二.概念 Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言.语法类似于 EL:SpEL ...

  7. 安全框架 SpringSecurity 和 Shiro 对比

    突然再次很想理一下权限的事,但是实在不知道实际情况选哪个框架好,现在整理下网上的资料,做一下对比. 1.Spring-security 对spring 结合较好,如果项目用的springmvc ,使用 ...

  8. APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了

    APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了 彻底理解android中的内部存储与外部存储 存储在内部还是外部 所有的Android设备均有两个文件存储区域:"intern ...

  9. dede使用方法----如何在wamp环境下安装dede

    dede是基本php编写的一套框架,因此在使用dede之前必须要先搭建一上php的环境.本篇文章首先讲述如何搭建一个wamp环境,再讲述如何安装dede. 准备工具:wamp , dedeCMS 1. ...

  10. C语言与套接字

    我们已经知道如何使用I/O与文件通信,还知道了如何让同一计算机上的两个进程进行通信,这篇文章将创建具有服务器和客户端功能的程序 互联网中大部分的底层网络代码都是用C语言写的. 网络程序通常有两部分组成 ...