.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展示了基本的数据库操作。
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", );
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上。
.NET平台开发Mongo基础知识的更多相关文章
- ArcGIS API for JavaScript开发初探——基础知识
1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...
- Java开发培训基础知识解析之反射机制
Java是老牌编程语言,是当前应用最广泛的编程语言之一.想要学习Java你就一定要掌握Java基础知识,而反射对于初学Java的人来说绝对是非常重要的知识点.什么是反射?如何理解反射机制?如何使用反射 ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之基础知识
前言: 在具体回顾每一个功能的实现前,还是有必要先温习一些项目涉及到的PHP.MySQL[语法基础].项目github地址:https://github.com/66Web/php_book_stor ...
- ArcGIS Engine开发前基础知识(4)
ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...
- Unity游戏开发面试基础知识
面试第一次知识总结: 一.Unity基本操作 1.unity提供哪几种光源? 点光源.平行光.聚光灯.区域光. 2.物体发生碰撞的必要条件什么? 两个物体必须有碰撞体Collider组件,一个物体上必 ...
- ArcGIS Engine开发前基础知识(3)
对象模型图 一.对象模型图中的类与接口 ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承.组合.关联等.对象模型图(Object model diagram,ODM) ...
- ArcGIS Engine开发前基础知识(1)
ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现 ...
- Python开发——1.基础知识
一.开发 开发语言分为高级语言和低级语言 高级语言:Python.Java.PHP.C++.C#.GO.Ruby等:低级语言:C.汇编语言. 高级语言对应的是字节码,是将代码编译成字节码,然后交给机器 ...
- android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器
一.基础知识点学习 1.Android体系结构 如图所示,android 架构分为三层: (1)最底层是linux内核,主要是各种硬件的驱动,如相机驱动(Camera Driver),闪存驱动(Fl ...
随机推荐
- caffe源码阅读(一)convert_imageset.cpp注释
PS:本系列为本人初步学习caffe所记,由于理解尚浅,其中多有不足之处和错误之处,有待改正. 一.实现方法 首先,将文件名与它对应的标签用 std::pair 存储起来,其中first存储文件名,s ...
- 照片元数据信息以及在照片中写入gps信息
/// 照片元数据编码 在下面的文章里,可以看到图片所有的元数据定义信息 https://msdn.microsoft.com/zh-cn/library/system.drawing.imaging ...
- 5.2视图中的Order by
创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的:
- DelphiXE2 DataSnap开发技巧收集
DelphiXE2 DataSnap开发技巧收集 作者: 2012-08-07 09:12:52 分类:Delphi 标签: 作为DelphiXE2 DataSnap开发的私家锦囊, ...
- Flash Builder常见菊紧问题集锦
FB的错误多多,不定什么时候就让你蛋碎,路遇操蛋问题集锦如下: 1.有次用Flash Builder 4.7,打开之后马上自动关闭,试了几次都这样,解决办法如下: 到C:\Documents and ...
- 8 TIPS TO BECOME A MICROSOFT TECHNICAL EVANGELIST
8 TIPS TO BECOME A MICROSOFT TECHNICAL EVANGELIST By Thomas Lewis February, 28 2012 I have had a pai ...
- HashTable 简述
1.解释:使用了映射函数,把值映射到对应的位置,key-> address, address是表中的存储位置,不是实际的地址: 2.Hash 函数设计, 分布合理,冲突少,利用率平衡,利用率 ...
- Magento1.9批量修改产品 Attribute Set
今天修改产品时遇到这样一个需求:重新设置产品的 Attribute Set,使用的是Magento1.9系统,Magento提供这样一个插件 Flagbit Change Attribute Set: ...
- python第十九天-----Django进阶
1.机智的小django为我你们提供了快捷的表单验证! from django.shortcuts import render, HttpResponse,redirect from django i ...
- iOS中的上传、下载流程心得
访问相册 1. 判断资源库是否有效 2. 创建imagePickerController 设置代理 弹出视图控制器 3. 实现协议方法 > iOS10 访问系统相册需要在info.plis ...