.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 ...
随机推荐
- amqp事务
摘要: 介绍confirm的工作机制.使用spring-amqp介绍事务以及发布确认的使用方式.因为事务以及发布确认是针对channel来讲,所以在一个连接中两个channel,一个channel可以 ...
- php的数据循环 之li的3个类判断
这种判断必须得保证后台数据的键值为数字 ,反正要能跟数字计算的数据才行 ts2.php <?php$array = array('0'=>'a1','1'=>'b1','2'=> ...
- Linux常用目录及文件
1./etc/sysconfig/network 操作相关:hostname设置 2./etc/sysconfig/network-scripts/ifcfg-ethX(X为0.1等编号,一般为0) ...
- C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- Oracle数据库like和not like使用
查询手机号注册的记录而不是邮箱 查询2开头的记录 select * from beyond_pay_offline where amount like '2%'
- We have a problem with promises
原文地址:http://fex.baidu.com/blog/2015/07/we-have-a-problem-with-promises/ 用Javascript的小伙伴们,是时候承认了,关于 p ...
- MySQL for Windows 解压缩版安装 和 多实例安装
MySQL 5.6 for Windows 解压缩版配置安装 http://jingyan.baidu.com/album/f3ad7d0ffc061a09c3345bf0.html?picindex ...
- VFP正则表达式判断是否是手机号码/电子邮件
正则表达式,可以理解为字符匹配或搜索技术 ,重要的是Pattern属性的写法. *--判断是否是手机号码Function isMobiPhoneLparameters cStroRegExp=Newo ...
- Math DayTwo
(1)Excel Sheet Column Number 解题思路:将26进制的数转化为10进制 代码如下: public class Solution { public int titleToNum ...
- 分支合并git checkout adview git merge adview3
分支合并 git checkout adview git merge adview3