MongoDb学习1
目标框架必须是 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的更多相关文章
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
- MongoDB学习(四)客户端工具备份数据库
在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...
- mongodb学习(1) 第一次开启 mongdb
1.启动mongdb 可以设置为开机启动 mongod -dbpath=/data/mongodb --fork --port 27017 --logpath=/usr/local/mongodb/l ...
- MongoDB学习之--安全和认证
MongoDB学习之--安全和认证 本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作: 虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个 ...
随机推荐
- iOS -- 上传多张图片 后台(PHP)代码和上传一张的一样
// 上传多张图片 - (void)send { // 设置初始记录量为0 self.count = 0; self.upcount = 0; // 设置初始值为NO self.isUploadPic ...
- iOS 自定义NavigationBar右侧按钮rightBarButtonItem--button
//两个按钮的父类view UIView *rightButtonView = [[UIView alloc] initWithFrame:CGRectMake(, , , )]; //历史浏览按钮 ...
- mailto: HTML e-mail 链接
转载: http://www.haorooms.com/post/mailto_link_html 什么是mailto链接? mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息.但 ...
- springMvc静态资源拦截问题
测试的时候发现:如果直接访问web项目的html等静态资源,不能访问 原因如下: 当web.xml中url-pattern配置为"/"时,会导致系统中的静态资源被拦截 如何解决: ...
- vim选中字符复制/剪切/粘贴
转载自:http://www.cnblogs.com/luosongchao/p/3193153.html 问题描述: vim 中选中指定字符,进行复制/剪切/粘贴 选择:1.普通模式下--v+hjk ...
- bzoj 1503 splay
因为是整体加减,所以直接记录在外面. #include<iostream> #include<cstdio> #include<cstring> #include& ...
- mysql为表添加外键完成性约束 报错Can't create table 'sfkbbs.#sql-513_25' (errno: 150)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtkAAAAyCAIAAAAGM1ChAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu
- UOJ149 【NOIP2015】子串
本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! [问题描述]有两个仅包含小写英文字母的字符串 A ...
- 文件属性之setuid位
setuid位是可执行文件的一个属性,ls -l /bin/ping 或mount等可以看到权限为-rwsr-xr-x 1 root root 含有s位,所属用户为root表明该文件可以被其他用户以该 ...
- ListView优化-通用ViewHolder编写备份
ViewHolder.java package cn.edu.bzu.util; import android.content.Context; import android.util.SparseA ...