.NET平台开发Mongo基础知识
NoSQL简介
NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的。关于NoSQL你需要了解
- 什么是NoSQL
- NoSQL和传统的关系型数据库有什么区别
- NoSQL的优缺点
这几个问题下面的文章有所介绍:
http://www.runoob.com/mongodb/nosql.html
http://www.infoq.com/cn/news/2011/01/nosql-why/
MongoDB
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
更详细的介绍可以参见:
http://www.runoob.com/mongodb/mongodb-intro.html
MongoDB安装
去http://www.mongodb.org/downloads 地址下载并安装MongoDB。
根据你的机器选择相应的安装包,32位系统上MongoDB数据库最大为2G。
安装结束后首先创建默认的数据库存储地址c:\data\db
通过命令行mongod.exe --dbpath c:\data\db来把mongodb和存储路径关联起来,命令行显示如下:
表示关联成功,并且在27017端口上监听连接。
MongoDB后台管理Shell
在安装路径下执行mongo.exe文件会执行MongoDB Shell,是一个自带的交互式的JavaScript Shell,用来对MongoDB进行操作和管理的交互式环境。
Shell中输入help显示帮助命令
数据库创建删除
- Shell中输入 use tutorial来尝试连接名为tutorial的数据库,如果数据库不存在则创建。
- 输入db.dropdatabase()来删除当前数据库。
- 输入show dbs显示数据库信息。
创建删除表信息
- db.websites.insert({title:'www.baidu.com',url:'www.baidu.com'}) 来在websites表中插入一条记录
- db.websites.find()查询
C#操作MongoDB
首先下载.NET版本的MongoDB Driver,尝试在Nuget找一下吧:
下载并安装。
找到了API我们就可以进行增删改查了,下面的Demo Code展示了基本的数据库操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | using System; using System.Xml.Linq; using MongoDB.Bson; using MongoDB.Driver; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace WikiExampleConsole { class Program { static void Main( string [] args) { Console.WriteLine( "Connect..." ); MongoConnectionStringBuilder builder = new MongoConnectionStringBuilder(); builder.Server = new MongoServerAddress( "localhost" , 27017); builder.DatabaseName = "tutorial" ; MongoServer mongo = MongoServer.Create(builder); mongo.Connect(); Console.WriteLine( "Connected" ); Console.WriteLine(); var db = mongo.GetDatabase( "tutorial" ); using (mongo.RequestStart(db)) { var collection = db.GetCollection<BsonDocument>( "books" ); BsonDocument book = new BsonDocument() .Add( "_id" , BsonValue.Create(BsonType.ObjectId)) .Add( "author" , "Ernest Hemingway" ) .Add( "title" , "For Whom the Bell Tolls" ); collection.Insert(book); var query = new QueryDocument( "author" , "Ernest Hemingway" ); foreach (BsonDocument item in collection.Find(query)) { string json = item.ToJson(); Console.WriteLine(json); Console.WriteLine(); JToken token = JToken.Parse(json); token.SelectToken( "title" ).Replace( "some other title" ); Console.WriteLine( "Author: {0}, Title: {1}" , token.SelectToken( "author" ), token.SelectToken( "title" )); Console.WriteLine(); XNode node = JsonConvert.DeserializeXNode(json, "documents" ); Console.WriteLine( "Node:" ); Console.WriteLine(node); Console.WriteLine(); BsonElement author = item.GetElement( "author" ); BsonElement title = item.GetElement( "title" ); foreach (BsonElement element in item.Elements) { Console.WriteLine( "Name: {0}, Value: {1}" , element.Name, element.Value); } Console.WriteLine(); Console.WriteLine( "Author: {0}, Title: {1}" , author.Value, title.Value); } } Console.WriteLine(); Console.Read(); mongo.Disconnect(); } } } |
相关代码托管在了https://github.com/cuicheng11165/Mongo-Demo上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库