当前位置:  编程技术>.net/c#/asp.net

.NET连接MongoDB数据库实例教程

    来源: 互联网  发布时间:2014-10-24

    本文导语:  使用代码让我们从Mongo数据库的一些细节和基本命令开始,并最终介绍如何创建一个可连接至Mongo数据库的.NET Windows应用。Mongo数据库MongoDB 是一个跨平台、文档导向的数据库系统,它被归类为“NoSQL”数据库。MongoDB避开了传统...



使用代码

让我们从Mongo数据库的一些细节和基本命令开始,并最终介绍如何创建一个可连接至Mongo数据库的.NET Windows应用。

Mongo数据库

MongoDB 是一个跨平台、文档导向的数据库系统,它被归类为“NoSQL”数据库。MongoDB避开了传统的基于表的关系数据库结构,而是使用了带动态模式的类JSON文档。MongoDB将这种格式称为BSON(二进制JSON)。这种动态模式使得特定类型应用中的数据整合更简单、更快速。MongoDB是自由且开源的软件。

Mongo数据库的特性

Ad hoc 查询
1 标引
2 复制
3 负载均衡
4 文件存贮
5 聚合
6 服务器端 JavaScript 执行
7 定容集合

用户可从 此处 下载Mongo数据库,然后将其中内容解压至任一文件夹。 文件下载完成后,用户需要配置MongoDB的数据文件夹。做法是在“C:Data”文件夹下创建一个名为“DB”的文件夹。

数据文件夹创建好以后,可以通过用命令行提示符在“bin”文件夹下运行“mongod.exe”来启动Mongo数据库。


现在数据库已经启动,并正在运行。

创建一个.NET应用
创建一个.NET web/Windows应用。在这个示例中,我们将用一个简单的员工表。
开始之前,我们需要确保系统中装有MongoDB的.NET驱动。你可以按下面的步骤来为一个指定的项目安装驱动。
打开Visual Studio的包管理器:

打开包管理器控制台后,用户可以执行下面的命令:

代码如下:

Install-Package mongocsharpdriver

在项目中添加对下列命名空间的引用:

代码如下:

using MongoDB.Bson;
using MongoDB.Driver;
//此外,你将频繁的用到下面这些 using 语句中的一条或多条:
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;


声明数据库服务器和数据库的变量:


代码如下:

MongoServer _server;
MongoDatabase _database;

用下面的命令连接至数据库。在这里,数据库服务器是在本地主机上运行的,端口为:27017,数据库名为“ anoop”。

代码如下:

private void Form1_Load(object sender, EventArgs e)
{
    string connection = "mongodb://localhost:27017";
    _server = MongoServer.Create(connection);
    _database = _server.GetDatabase("anoop", SafeMode.True);
}

在这里,我们创建了三个使用不同属性集合的类。我们可以设置这些类的属性,并将数据保存至同一个数据库、同一个表。这是无模式数据库的真正优势:插入数据时不检查模式。保存不同的记录时可以用不同的域的集合,而其它的域 将 默认被视为NULL。

代码如下:

public class Users1
 {
     public ObjectId Id { get; set; }
     public string Name { get; set; }
     public int Age { get; set; }
 }
 public class Users2
 {
     public ObjectId Id { get; set; }
     public string Name { get; set; }
     public string Location { get; set; }
 }
 public class Users3
 {
     public ObjectId Id { get; set; }
     public string Name { get; set; }
     public int Age { get; set; }
     public string Location { get; set; }
 }
 private void rbEntity1_CheckedChanged(object sender, EventArgs e)
 {
     txtName.Enabled = true;
     txtAge.Enabled = true;
     txtLocation.Enabled = true;
 }
 private void rbEntity2_CheckedChanged(object sender, EventArgs e)
 {
     txtName.Enabled = true;
     txtAge.Enabled = false;
     txtLocation.Enabled = true;
 }
 private void rbEntity3_CheckedChanged(object sender, EventArgs e)
 {
     txtName.Enabled = true;
     txtAge.Enabled = true;
     txtLocation.Enabled = false;
 }
 private void btnSave_Click(object sender, EventArgs e)
 {
     if (rbEntity1.Checked)
     {
         var _users = _database.GetCollection("users");
         var user = new Users3 { };
         user.Age = Convert.ToInt32(txtAge.Text);
         user.Name = txtName.Text;
         user.Location = txtLocation.Text;
         _users.Insert(user);
         var id = user.Id;
     }
     else if (rbEntity2.Checked)
     {
         var _users = _database.GetCollection("users");
         var user = new Users2 { };
         user.Name = txtName.Text;
         user.Location = txtLocation.Text;
         _users.Insert(user);
         var id = user.Id;
     }
     else if (rbEntity3.Checked)
     {
         var _users = _database.GetCollection("users");
         var user = new Users1 { };
         user.Age = Convert.ToInt32(txtAge.Text);
         user.Name = txtName.Text;
         _users.Insert(user);
         var id = user.Id;
     }
     MessageBox.Show("User with name " + txtName.Text + " created");
 }

代码如下:

///下面的代码帮助你从Mongo数据库中查找一条现有记录。
_collection = _database.GetCollection("users");
IMongoQuery query = Query.EQ("Name", "Anoop");
Users1 _user = _collection.FindAs(query).FirstOrDefault();
MessageBox.Show(_user.Age.ToString());

代码如下:

///下面的代码帮助你更新Mongo数据库中的一条现有记录。
_collection = _database.GetCollection("users");
IMongoQuery query = Query.EQ("Name", "Anoop");
Users1 _user = _collection.FindAs(query).FirstOrDefault();
MessageBox.Show("Age before update :" + _user.Age.ToString());
//更新年龄的值
_user.Age = 30;

//保存更改           
_collection.Save(_user);
MessageBox.Show("Age after update :" + _user.Age.ToString());

    
 
 

您可能感兴趣的文章:

  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • asp.net输出重写压缩页面文件的实例
  • vb.net实例代码 连接访问数据库文件(mdb)
  • c#(asp.net)连接excel的实例代码
  • DataGrid的Pagable(VB.NET)实例代码
  • vb.net实例代码 在访问表中遍历记录
  • 关于C#.net winform程序验证moss的集成身份认证实例
  • asp.net 伪静态简单实例
  • .net实现序列化与反序列化实例解析
  • vb.net DropDownList控件实例代码 在DropDownList控件中显示访问数据
  • C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
  • asp.net取得所有颜色值实例
  • asp.net操作cookie实例代码
  • asp.net 动态添加多个用户控件(实例代码)
  • asp.net实例 定义和使用asp:AccessDataSource
  • asp.net 动态创建控件的演示实例
  • asp.net 邮件发送类的简单实例
  • asp.net实例代码 在DataGrid控件中显示数据
  • ASP.net WebAPI 上传图片实例
  • asp.net 操作cookie实例详解
  • asp.net读取与删除磁盘文件的实例代码
  • net-snmp如何去连接外部的库
  • 运行lumaqq时,出现了一个“连接错误”,说“edu.tsinghua.lumaqq.net.porter",是怎么加事啊?
  • asp.net 在webcofig中连接数据库二种方式
  • 基于.net中突破每客户端两个http连接限制的详细介绍
  • asp.net怎么连接access数据库
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • asp.net 3.5中在web.config文件创建ACCESS连接字符串的方法
  • asp.net连接数据库超时的解决办法
  • ASP.NET连接MySql数据库的2个方法及示例
  • c#数据绑定之向查询中添加参数(.Net连接外部数据库)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • java命名空间java.net类datagrampacket的类成员方法: getsocketaddress定义及介绍
  • Java.NET or J#.NET is coming!
  • java命名空间java.net类multicastsocket的类成员方法: getinterface定义及介绍
  • make menuconfig时出错:net/Kconfig:221:can't open file "net/wireless/Kconfig"
  • java命名空间java.net枚举proxy.type的类成员方法: http定义及介绍
  • 用过net-snmp(ucd-snmp)的大侠用过net-snmp(ucd-snmp)请进(来者有分)
  • java命名空间java.net类urisyntaxexception的类成员方法: getreason定义及介绍
  • 常用.NET工具(包括.NET可再发行包2.0)下载
  • java命名空间java.net类datagramsocketimpl的类成员方法: getlocalport定义及介绍
  • Ja.Net
  • java命名空间java.net类httpretryexception的类成员方法: getreason定义及介绍
  • asp.net判断数据库表是否存在 asp.net修改表名的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3