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进行数据读写的更多相关文章

  1. 实现AT24C02的数据读写操作

    /*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03 ...

  2. 如何确保Memcache数据读写操作的原子性(转)

    什么是CAS协议 Memcached于1.2.4版本新增CAS(Check and Set)协议类同于Java并发的CAS(Compare and Swap)原子操作,处理同一item被多个线程更改过 ...

  3. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  4. HBase 数据读写流程

    HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 ro ...

  5. Asp.net通过Jquery操作WebService进行Ajax读写

    一说到开始,我们当然需要项目. 首先,创建一个Asp.net Web 应用,然后新增一个名称为“Web 服务”的文件,也就是后缀名为".asmx"的文件,然后需要进行配置一下,在W ...

  6. 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据

    [源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ...

  7. 【详解】换一个角度看Socket的数据读写

    前言 以前对IO.NIO还算了解,也写过Netty的项目.但是对底层的数据传递不是很了解,一直存有这方面的疑惑.但是由于有其他事情就被打断了.前阵子因为想要了解volatile关键字的原理,学习了下J ...

  8. java拾遗5----Java操作Mongo入门

    Java操作Mongo入门 参考: http://api.mongodb.com/java/3.2/ http://www.runoob.com/mongodb/mongodb-java.html h ...

  9. mongo实践-透过js shell操作mongo

    mongo实践-通过js shell操作mongo 保存命令: j={name:"wangjingjing",age:15} db.user.save(j); 查询命令: var ...

随机推荐

  1. Java之Map的使用场景

    总结之 Map接口 的使用场景(day04) Map: Map中的集合,元素是成对存在的(理解为夫妻).每个元素由键与值两部分组成,通过键可以找对所对应的值 Map中的集合不能包含重复的键,值可以重复 ...

  2. Fantastic Graph 2018 沈阳赛区网络预赛 F题

    题意: 二分图 有k条边,我们去选择其中的几条 每选中一条那么此条边的u 和 v的度数就+1,最后使得所有点的度数都在[l, r]这个区间内 , 这就相当于 边流入1,流出1,最后使流量平衡 解析: ...

  3. Java线程总结---第一天

    线程和进程各自有什么区别和优劣: 进程是资源分配的最小单位,线程是程序执行的最小单位 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段.堆栈段和数据段,这种操 ...

  4. BZOJ 2242 [SDOI2011]计算器 | BSGS

    insert的时候忘了取模了-- #include <cstdio> #include <cmath> #include <cstring> #include &l ...

  5. KEIL5.25生成.bin文件步骤

    添加.bin文件转换工具 KEIL5的自带.bin文件转化工具在安装目录下:我的安装目录是C盘即,C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe 添加格式为:[C:\Keil ...

  6. PostgreSQL(一)教程 -----SQL语言

    一.概念 PostgreSQL是一种关系型数据库管理系统 (RDBMS).这意味着它是一种用于管理存储在关系中的数据的系统.关系实际上是表的数学术语. 今天,把数据存储在表里的概念已经快成了固有的常识 ...

  7. NameError: name 'reload' is not defined

    对于 Python 2.X: import sys reload(sys) sys.setdefaultencoding("utf-8") 对于 <= Python 3.3: ...

  8. SQL语句(九)使用特殊关系运算符查询

    使用特殊关系运算符查询 特殊关系运算符 IN.NOT IN IS NULL.IS NOT NULL BETWEEN.NOT BETWEEN LIKE.NOT LIKE IN , NOT IN IN 在 ...

  9. SQL语句(十三)多表查询

    多表查询 1. 笛卡尔乘积 简单格式 SELECT * 或字段列表 FROM 数据表列表 实例 --1. 笛卡尔乘积 (五条件的连接--很多条件无意义) Select * from Student, ...

  10. ngx_lua_API 指令详解(二)ngx.re.match/find/gmatch/sub/gsub指令集合

    1.先来个官方的ngx.re.match location /ngx_re_match { default_type text/html; content_by_lua_block { local m ...