C#操作Mongo进行数据读写
C#操作MongoHelp类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
namespace MvcMongoDemo.Common
{
public class MongoHelper<T> where T:class
{
private string conn = "mongodb://localhost";
private string dbName = "test";
private string collectionName;
//string collection = "user";
private MongoDatabase db; public MongoHelper()
{
db = GetCollection();
collectionName = typeof(T).Name;
} /// <summary>
/// 设置你collection
/// </summary>
private MongoDatabase GetCollection()
{
MongoClient client = new MongoClient(conn);
return client.GetServer().GetDatabase(dbName); }
/// <summary>
/// 获取所有的数据
/// </summary>
/// <returns></returns>
public List<T> GetAllList()
{ return db.GetCollection<T>(collectionName).FindAll().ToList(); }
/// <summary>
/// 根据条件查询获取数据
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<T> GetList(IMongoQuery query)
{ return db.GetCollection<T>(collectionName).Find(query).ToList();
} /// <summary>
/// 分页查询获取数据信息
/// </summary>
/// <param name="query">where条件</param>
/// <param name="totalCount">总条数</param>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">每页显示数量</param>
/// <returns></returns>
public List<T> GetListPage(IMongoQuery query,out int totalCount, int pageIndex=,int pageSize=)
{ totalCount = int.Parse(db.GetCollection<T>(collectionName).Find(query).Count().ToString());
return db.GetCollection<T>(collectionName).Find(query).Skip((pageIndex - ) * pageSize).Take(pageSize).ToList();
} /// <summary>
/// 根据条件查询返回单条数据
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public T GetSign(IMongoQuery query)
{ return db.GetCollection<T>(collectionName).FindOne(query);
} /// <summary>
/// 根据主键_id查询获取单条数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public T GetSign(BsonValue id)
{ return db.GetCollection<T>(collectionName).FindOneById(id);
} /// <summary>
/// 单条数据添加
/// </summary>
/// <param name="model"></param>
public void Add(T model)
{ db.GetCollection<T>(collectionName).Insert<T>(model);
} /// <summary>
/// 批量添加数据
/// </summary>
/// <param name="list"></param>
public void AddtBatch(List<T> list)
{
db.GetCollection<T>(collectionName).InsertBatch<T>(list);
} /// <summary>
/// 根据条件删除数据
/// </summary>
/// <param name="query"></param>
public void Delete(IMongoQuery query)
{
db.GetCollection<T>(collectionName).Remove(query); } /// <summary>
/// 删除所有数据记录
/// </summary>
public void DeleteAll()
{
db.GetCollection<T>(collectionName).RemoveAll();
} /// <summary>
/// 更新单个字段值
/// </summary>
/// <param name="query"></param>
/// <param name="updateQuery"></param>
public void Modity(IMongoQuery query,IMongoUpdate updateQuery )
{ db.GetCollection<T>(collectionName).Update(query,updateQuery,UpdateFlags.Multi); } /// <summary>
/// 更新多个字段值
/// </summary>
/// <param name="query"></param>
/// <param name="updates"></param>
public void Modity(IMongoQuery query, UpdateBuilder[] updates)
{ WriteConcernResult result = db.GetCollection<T>(collectionName).Update(query, Update.Combine(updates), UpdateFlags.Multi); } }
}
添加数据
Common.MongoHelper<UserInfo> mongoHelp = new Common.MongoHelper<UserInfo>();
List<UserInfo> list = new List<UserInfo>();
for (int i = ; i <= ; i++)
{
UserInfo model = new UserInfo(); model.ID = i;
model.Name = "用户" + i;
model.Age = - i;
model.Gender = i % == ? true : false;
model.Address = "地址" + i;
model.AddTime = System.DateTime.Now.AddDays(-i); //单条数据记录添加
// mongoHelp.Add(model);
list.Add(model); } //批量插入
// mongoHelp.AddtBatch(list);
删除数据
IMongoQuery query = null;
query = Query.And(
Query.EQ("Name", "用户2") ); //根据条件删除
mongoHelp.Delete(query); //删除所有数据
mongoHelp.DeleteAll();
更新数据
IMongoQuery queryWhere = Query.And(Query.EQ("ID",));
List<UpdateBuilder> updateList = new List<UpdateBuilder>();
updateList.Add(Update.Set("Address", "我现在住在北京哈哈```"));
updateList.Add(Update.Set("Name", "用户修改过的1"));
updateList.Add(Update.Set("Age", ));
IMongoUpdate update = Update.Set("Name", "用户修改过的");
//对单个字段值进行更新
mongoHelp.Modity(queryWhere, update);
//更新多个字段值
mongoHelp.Modity(queryWhere, updateList.ToArray());
查询数据
//根据_id索引去查询单条数据
UserInfo model2=null;
BsonValue id = "5973374e718e126c2801b81d";
model2= mongoHelp.GetSign(id); //根据条件去查询数据
model2 = mongoHelp.GetSign(queryWhere);
List<UserInfo> listModel = new List<UserInfo>(); //查询返回多条数据记录
listModel = mongoHelp.GetList(queryWhere); //获取所有数据记录
listModel = mongoHelp.GetAllList(); //分页获取数据
int totalCount = ;
listModel = mongoHelp.GetListPage(queryWhere, out totalCount, , );
UserInfo实体类
public class UserInfo
{ /// <summary>
/// 主键索引,没有该字段更新数据时会报异常
/// </summary>
public ObjectId _id { get; set; }
public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } public bool Gender { get; set; } public string Address { get; set; } public DateTime AddTime { get; set; }
}
C#操作Mongo进行数据读写的更多相关文章
- 实现AT24C02的数据读写操作
/*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03 ...
- 如何确保Memcache数据读写操作的原子性(转)
什么是CAS协议 Memcached于1.2.4版本新增CAS(Check and Set)协议类同于Java并发的CAS(Compare and Swap)原子操作,处理同一item被多个线程更改过 ...
- JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作
基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...
- HBase 数据读写流程
HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 ro ...
- Asp.net通过Jquery操作WebService进行Ajax读写
一说到开始,我们当然需要项目. 首先,创建一个Asp.net Web 应用,然后新增一个名称为“Web 服务”的文件,也就是后缀名为".asmx"的文件,然后需要进行配置一下,在W ...
- 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据
[源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ...
- 【详解】换一个角度看Socket的数据读写
前言 以前对IO.NIO还算了解,也写过Netty的项目.但是对底层的数据传递不是很了解,一直存有这方面的疑惑.但是由于有其他事情就被打断了.前阵子因为想要了解volatile关键字的原理,学习了下J ...
- java拾遗5----Java操作Mongo入门
Java操作Mongo入门 参考: http://api.mongodb.com/java/3.2/ http://www.runoob.com/mongodb/mongodb-java.html h ...
- mongo实践-透过js shell操作mongo
mongo实践-通过js shell操作mongo 保存命令: j={name:"wangjingjing",age:15} db.user.save(j); 查询命令: var ...
随机推荐
- Linux命令(二十四) 磁盘管理命令(二) mkfs,mount
一.格式化文件系统 mkfs 当完成硬盘分区以后要进行硬盘的格式化,mkfs系列对应的命令用于将硬盘格式化为指定格式的文件系统.mkfs 本身并不执行建立文件系统的工作,而是去调用相关的程序来执行.例 ...
- Codeforces 1097 G. Vladislav and a Great Legend
题目链接 一道好题. 题意:给定一棵\(n\)个点的树,求: \[\sum_{S\subseteq \{1,2,\dots,n\}}f(S)^k\] 其中\(f(S)\)代表用树边将点集\(S\)连通 ...
- 等价类计数(Polya定理/Burnside引理)学习笔记
参考:刘汝佳<算法竞赛入门经典训练指南> 感觉是非常远古的东西了,几乎从来没有看到过需要用这个的题,还是学一发以防翻车. 置换:排列的一一映射.置换乘法相当于函数复合.满足结合律,不满足交 ...
- python--inspect模块
inspect模块主要提供了四种用处: 1.对是否是模块.框架.函数进行类型检查 2.获取源码 3.获取类或者函数的参数信息 4.解析堆栈 一.type and members 1. inspect. ...
- MT【175】刚刚凑巧
已知$\Delta ABC$满足$\sin^2A+\sin^2B+\sin^2C=2\sqrt{3}\sin A\sin B\sin C,a=2$,求$A$ 提示:利用正弦定理:$a^2+b^2+c^ ...
- VS2010 代码突然改变字体 解决办法
sfsfsddffs dffsfsfsfsf 如上,第一行是突然变成宽体的字体,第二行是恢复后的字体,方法就是: shift+空格键,一起按就会在这两种字体之间变换~
- 《剑指offer》— JavaScript(34)第一个只出现一次的字符
第一个只出现一次的字符 题目描述 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置. *** 思路 新建一个对象,其中key用 ...
- C/S与B/S区别
1.什么是C/S结构C/S (Client/Server)结构,即客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现, ...
- java基础基础总结----- RunTime
- Mac下安装zsh(Oh My ZSH)的shell,替代原有的bash
说明:一开始装zsh我是拒绝的,因为这个东西装简单,卸载很难,并且装了之后默认Shell的配置文件不能用了,比如~/.bashrc这些.所以在装的时候要再三考虑好! 官网:http://ohmyz.s ...