热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NET程序如何连接MongoDB数据库

引言这则小窍门将讲述如何开发一个.NET应用来连接Mongo数据库并执行多种操作。同时还稍微涉及了Mongo数据库和多种命令。使用代码让我们从Mongo数据库的一些细节和基本命令开始,并最终介绍如何创建一个可连接至Mongo数据库的.NETWindows应用。Mongo数据

引言

这则小窍门将讲述如何开发一个.NET应用来连接Mongo数据库并执行多种操作。同时还稍微涉及了Mongo数据库和多种命令。

使用代码

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

Mongo数据库

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

Mongo数据库的特性

Ad hoc 查询

标引

复制

负载均衡

文件存贮

聚合

服务器端 Javascript 执行

定容集合

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

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

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

创建一个.NET应用

创建一个.NET web/Windows应用。在这个示例中,我们将用一个简单的员工表。

开始之前,我们需要确保系统中装有MongoDB的.NET驱动。你可以按下面的步骤来为一个指定的项目安装驱动。

打开Visual Studio的包管理器:

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

Install-Package mongocsharpdriver 

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

using MongoDB.Bson; 

using MongoDB.Driver; 

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"); 

 }

_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()); 


推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • MongoVUE基础操作指南:轻松上手数据库管理
    本文介绍了MongoVUE的基础操作,旨在帮助用户轻松掌握数据库管理技巧。MongoVUE是一款功能强大的MongoDB客户端工具,虽然需要注册,但其用户友好的界面和丰富的功能使其成为许多开发者的首选。文中详细解释了安装步骤、基本配置以及常见操作方法,并对一些常见的问题进行了修正和补充,确保用户能够快速上手并高效使用MongoVUE进行数据库管理。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
author-avatar
一切近乎完美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有