写在前面

最近项目需要,就研究了下mongodb,也是为了快速上手,就自己弄了一个简单的例子,这里记录一下。

Mongodb

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

那么在c#如何使用呢?下面看个例子,你会发现上手非常简单。

要操作数据库,首先考虑的就是连接字符串的问题,因为这就相当于你从那儿拿数据,先要有路子才行。

MongoDB 标准连接字符串

mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

mongodb:// 是连接字串必须的前缀字串。

username:password@ 可选项,连接到数据库后会尝试验证登陆。

host1 必须的指定至少一个host。

:portX 可选项,默认连接到27017

/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开admin数据库。

?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开。

关于options可参考官网的东西。

说这些不如先上个例子,先上手实践一下。

          /// <summary>
/// 连接字符串
/// </summary>
private static readonly string _connectionString = "mongodb://sa:sa@192.168.1.105:27017/Test_mongo";
private static readonly string _dbName = "Test_mongo";

在c#中使用Mongodb需要引入如下的dll
采用Nuget进行安装就可以了。

增删改查的代码如下:

        /// <summary>
/// 新增
/// </summary>
/// <param name="customer"></param>
private static void Insert(Customer customer)
{
//创建mogodb对象
using (Mongo mongo = new Mongo(_connectionString))
{
//连接mongodb
mongo.Connect();
//获得要操作的数据库
var db = mongo.GetDatabase(_dbName);
//获取要操作的Collection
var collection = db.GetCollection<Customer>();
collection.Insert(customer);
}
}
/// <summary>
/// 批量添加
/// </summary>
/// <param name="lstCustomer"></param>
private static void InsertList(List<Customer> lstCustomer)
{
using (Mongo mongo = new Mongo(_connectionString))
{
mongo.Connect();
var db = mongo.GetDatabase(_dbName);
var collection = db.GetCollection<Customer>();
collection.Insert(lstCustomer);
}
}
/// <summary>
/// 更新
/// </summary>
/// <param name="customer"></param>
private static void Update(Customer customer)
{
using (Mongo mongo = new Mongo(_connectionString))
{
mongo.Connect();
var db = mongo.GetDatabase(_dbName);
var collection = db.GetCollection<Customer>();
//更新对象
collection.Update(customer, (x => x.CustomerID == customer.CustomerID));
}
}
/// <summary>
/// 获取所有的customer
/// </summary>
/// <returns></returns>
private static IList<Customer> GetList()
{
using (Mongo mongo = new Mongo(_connectionString))
{
mongo.Connect();
var db = mongo.GetDatabase(_dbName);
var collection = db.GetCollection<Customer>();
ICursor<Customer> mogoCollection = collection.FindAll(); return mogoCollection.Documents.ToList();
}
}
/// <summary>
/// 根据id获取单个对象
/// </summary>
/// <param name="customerId"></param>
/// <returns></returns>
private static Customer GetById(string customerId)
{
using (Mongo mongo = new Mongo(_connectionString))
{
mongo.Connect();
var db = mongo.GetDatabase(_dbName);
var collection = db.GetCollection<Customer>();
return collection.FindOne(x => x.CustomerID == customerId);
}
}
}
[Serializable]
class Customer
{
[MongoId]
public string CustomerID { set; get; }
public string CustomerName { set; get; }
public string ContactName { set; get; }
public string Address { set; get; }
public string PostalCode { set; get; }
public string Tel { set; get; }
}

测试

 static void Main(string[] args)
{
#region 批量插入
//List<Customer> list = new List<Customer>();
//for (int i = 0; i < 100; i++)
//{
// Customer customer = new Customer()
// {
// CustomerID = Guid.NewGuid().ToString(),
// Address = "北京" + i.ToString(),
// CustomerName = "wolfy" + i.ToString(),
// Tel = "123" + i.ToString(),
// PostalCode = "221212" + i.ToString(),
// ContactName = "wolfy" + i.ToString()
// };
// list.Add(customer);
//}
//InsertList(list);
#endregion
#region 更新
//更新需要先将该对象查询出,然后更新修改的值,不然其他的值为null
//Update(new Customer() { CustomerID = "08dca525-fb6d-4984-a55f-53723a6ce39c", ContactName = "wolfy22222" });
#endregion
#region 查询单个对象和集合
//Customer customer = GetById("8211501b-4341-4acb-b2fa-d6a714765443");
//Console.WriteLine(new JavaScriptSerializer().Serialize(customer));
List<Customer> customers = GetList().ToList();
Console.WriteLine(new JavaScriptSerializer().Serialize(customers));
#endregion
Console.Read();
}

总结

到这里就结束了,这里弄了一个简单例子,算是快速上手的例子。

Mongodb c#增删改查的更多相关文章

  1. Java连接MongoDB进行增删改查

    1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...

  2. MongoDB的增删改查 转

    MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系. ...

  3. Java实现mongodb原生增删改查语句

    Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...

  4. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  5. C# 对MongoDB 进行增删改查的简单操作

    C# 对MongoDB 进行增删改查的简单操作   下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库   /// & ...

  6. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  7. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  8. 2,MongoDB之增删改查及pymongo的使用

    本章我们来学习一下关于 MongoDB的增删改查 一.MongoDB操作 之 原生ORM,根本不存在SQL语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 是的,Mong ...

  9. SpringBoot操作MongoDB实现增删改查

    本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...

  10. MongoDB之增删改查(一)

    本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...

随机推荐

  1. python数字图像处理(10):图像简单滤波

    对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声:另一种是微分算子,可以用来检测边缘和特征提取. skimage库中通过filters模块进行滤波操作. 1.sobel算子 sobel算子 ...

  2. 几种Java NIO框架的比较(zz)

    问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO ...

  3. mysql命令行

    mysql -u root -p create database bookstore; drop database bookstore; use bookstore create table user ...

  4. aptana studio 3汉化方法 及支持jquery的方法

    之前看弦哥的 Asp.Net大型项目实践系列第二季(一)哥欲善其事,必先利其器 看到他介绍了aptana,好像用来学习js是个好工具... 因为不论你写什么,都会提示你它在各个浏览器中是否被支持... ...

  5. TableCell高度的控制

    TableCell高度的控制 计算并指定行高rowHeight 强制指定:self.tableView.rowHeight = 88 或实现UITableViewDelegate.tableView( ...

  6. 使用jQuery加载html页面到指定的div

    一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"> ...

  7. 轻松理解JS基本包装对象

    今天来讨论一下JS中的基本包装对象(也叫基本包装类型),之前刚学到这里的时候,自己也是一头雾水,不明白这个基本包装对象到底是个什么鬼,后来找了很多资料,终于看清了它的真面目.首先呢,我们现在复习一下J ...

  8. 我最优惠网系列(1)——HTML 解析类库HtmlAgilityPack

    0. 序言 在开发我最优惠网的过程中,遇到一些问题和技术点,写出来和大家分享,也是我自己对近期工作的整理和记录,预计会有解析HTML类库.本地缓存.链接跳转和C#中执行js代码技巧等方面. 1. Ht ...

  9. Mediator Pattern --中介者模式原理及实现(C++)

    主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍中介者模式的实现. 中介者模式:What it is:Define an object that ...

  10. Git.Framework 框架随手记--IIS7运行序列化问题

    客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间: ...