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=1,int pageSize=10)
        {

            totalCount = int.Parse(db.GetCollection<T>(collectionName).Find(query).Count().ToString());
            return db.GetCollection<T>(collectionName).Find(query).Skip((pageIndex - 1) * 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 = 1; i <= 5; i++)
{
UserInfo model = new UserInfo();

model.ID = i;
model.Name = "用户" + i;
model.Age = 100 - i;
model.Gender = i % 3 == 0 ? 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",1));

            List<UpdateBuilder> updateList = new List<UpdateBuilder>();
            updateList.Add(Update.Set("Address", "我现在住在北京哈哈```"));
            updateList.Add(Update.Set("Name", "用户修改过的1"));
            updateList.Add(Update.Set("Age", 1002));

            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 = 0;
             listModel = mongoHelp.GetListPage(queryWhere, out totalCount, 1, 10);
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; }
   }
时间: 2024-11-14 07:48:52

C#操作Mongo进行数据读写的相关文章

实现AT24C02的数据读写操作

源:实现AT24C02的数据读写操作 /*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03-15 版本:V1.0 ***************************************************************/ #include "INTRINS.H" #include "reg52.h"

C语言文件读写操作,写入数据到文件

很早写的在linux系统下的文件读写操作,写入数据到文件,很时候初学者学习 #include <stdio.h> int writeInfoToFile(const char *strFile) { int age, i; char name[10]; FILE *fp; fp = fopen(strFile, "w"); // 只读的方式打开文件 if(fp == NULL) { perror("fopen"); // 文件打开失败,打印错误信息 re

HBase 数据读写流程

HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 row0001 的用户信息 要想取得这条数据,就需要先找到含有此条记录的 region HBase 是如何定位到具体 regionserver 中的具体 region 的呢? HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息 例如

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

基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import java.io.IOException; /** * java标准IO(input/output)操作 * 输入流InputStrean:用于从数据源读取数据到程序中 * 输出流OutputStream:用于将数据发送至目标 * * 流划分为:节点流,处理流 * 节点流:又叫做低级流,特点:数据源明确,

Ch25 文件和注册表操作(2)-- 读写文件

老早之前就有一个想法,写一个小程序,可以读取文档,可以查找替换关键字,其实也是很简单的,正好最近看到文件系统这章,今天下午没事也就做了一个,这里总结一下: 1.用StreamReader读取文本文件,编码用Encoding.Default. StreamReader sr = new StreamReader(filePath,Encoding.Default); rtbContent.Text = sr.ReadToEnd(); sr.Close(); //释放锁定资源 2.统计要查找的字符,

mongo实践-透过js shell操作mongo

mongo实践-通过js shell操作mongo 保存命令: j={name:"wangjingjing",age:15} db.user.save(j); 查询命令: var cursor = db.user.find(); while(cursor.hasNext())printJson(cursor.next()); printJson(cursor[4]); var arr = cursor.toArray(); db.user.find({name:"wangji

php操作mongo语法

MongoDB不支持多表查询? 1.运行mongo服务 打开cmd,输入E:进入E盘. 输入cd E:\mongdb\bin 进入该目录下. 输入mongod --dbpath E:\mongodb\data    //开启mongo服务,并将数据信息保存在data文件夹下. ? 不要关闭cmd,关闭即关闭mongo服务.? 2.操作语法 连接数据库 <?php $conn = new Mongo();//实例 $db = $conn->mongo//选择数据库 $coll=$db->u

Cassandra 分布式数据库详解,第 2 部分:数据结构与数据读写

Cassandra 的数据存储结构 Cassandra 中的数据主要分为三种: CommitLog:主要记录下客户端提交过来的数据以及操作.这个数据将被持久化到磁盘中,以便数据没有被持久化到磁盘时可以用来恢复. Memtable:用户写的数据在内存中的形式,它的对象结构在后面详细介绍.其实还有另外一种形式是 BinaryMemtable 这个格式目前 Cassandra 并没有使用,这里不再介绍了. SSTable:数据被持久化到磁盘,这又分为 Data.Index 和 Filter 三种数据格

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

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数据 读写二进制数据 读写流数据 示例1.演示如何读写文本数据FileSystem/ReadWriteText.xaml <Page x:Class="Windows10.FileSystem.ReadWriteText" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x