.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 ...
随机推荐
- java 平台 权限管理
最近在做公司内部的物流业务平台的权限管理,感触颇多.记录一下 权限管理分两部分:数据权限和操作权限. 数据权限: 这个是和用户相关的. 因为平台是多机构的,所以再考虑数据权限的时候,是按照机构来管理的 ...
- 通过类名获取spring里的Bean
import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactor ...
- 【转载】 C++多继承中重写不同基类中相同原型的虚函数
本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...
- PHP防SQL注入不要再用addslashes和mysql_real_escape_string
PHP防SQL注入不要再用addslashes和mysql_real_escape_string了,有需要的朋友可以参考下. 博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助 ...
- java MAVEN 项目出现红叉
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- 使用 Entity Framework Core 时,通过代码自动 Migration
一 介绍 在使用 Entity Framework Core (下面就叫 EF Core 吧)进行开发时,如果模型有变动,我们要在用 EF Core 提供的命令行工具进行手工迁移,然后再运行程序.但是 ...
- 最近使用JQuery Easyui 碰到的几个奇怪问题
最近项目想尝试Easyui来做做前端界面,但是刚开始就碰到几个问题,记录下来,免得忘了. 1. 点击添加或修改按钮后,弹出窗体,窗体内容参加“href”属性远程加载 问题:第一次弹出窗体正常,但是再次 ...
- 从零构建一个简单的 Python Web框架
为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...
- 全是套路——BFS
#include <iostream> #include <vector> #include <string> #include <vector> #i ...
- JQuery Mobile入门——设置后退按钮文字(转)
http://www.tuicool.com/articles/AZnYVz JQuery Mobile入门——设置后退按钮文字 时间 2013-01-09 20:24:28 CSDN博客原文 h ...