写在前面

最近项目需要,就研究了下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. [CareerCup] 12.4 Test a Webpage 测试一个网页

    12.4 How would you load test a webpage without using any test tools? 这道题问我们如何不用任何测试工具来加载测试一个网页.加载测试可 ...

  2. PHP Yii1.1.13(一):命令行创建应用~shop

    第一节 初始目录结构 (1)初识目录结构 在创建应用之前,我们来看一下Yii 1.x版本的目录结构:将yii-1.1.13安装文件解压到网站根目录下,打开framework目录,其目录如下图所示 (2 ...

  3. 『随笔』WCF开发那些需要注意的坑

    执行如下 批处理:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\svcutil.exe" http://127.0.0.1: ...

  4. CodeIgniter框架入门教程——第一课 Hello World!

    本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...

  5. js验证身份证号

    /* * 身份证检测(格式.地区.生日.年龄范围) * code:检测字符串 rangeAge:年龄范围[格式为:25-55] * 返回值 0:为空 ,不为0则验证不通过 */ : : : : : : ...

  6. 喝咖啡写脚本,顺便再加一点点CSS语法糖 2.五分钟学会Less

    CoffeeScript + Html5 + Less这个新组合,看上去Less更容易拿下,先尝尝糖吧. Less这么小个东西,竟然要FQ,真是没有天理,简直不可理喻,先不管那么多了,那就看这个吧.h ...

  7. Calender的使用详解

    Calendar和GregorianCalendar简介 Calendar的中文翻译是日历,实际上,在历史上有着许多种计时的方法.所以为了计时的统一,必需指定一个日历的选择.那现在最为普及和通用的日历 ...

  8. java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream

    :java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream 这个问题是Mail.jar包没有引入到java路径中,或者是版本的问 ...

  9. QLabel添加图片链接

    <a href = "http://1450591036.qzone.qq.com"><img src=://splash.png height="30 ...

  10. tomcat 简介

    一,Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项 ...