mongodb入门介绍
MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
*面向集合存储,易存储对象类型的数据。
*模式自由。
*支持动态查询。
*支持完全索引,包含内部对象。
*支持查询。
*支持复制和故障恢复。
*使用高效的二进制数据存储,包括大型对象(如视频等)。
*自动处理碎片,以支持云计算层次的扩展性
*支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
*文件存储格式为BSON(一种JSON的扩展)
*可通过网络访问
所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB
在32位模式运行时支持的最大文件尺寸为2GB。
MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。
下面说一下配置流程:
1:首先去官网下载程序,http://www.mongodb.org/downloads2:创建一个DB文件夹,我是放到D盘,路径: D:\Web\mongo\db3:打开CMD设置数据库的路径: D:\Web\mongo\bin\mongod.exe --dbpath=d:\Web\mongo\db4:重新打开CMD输入: D:\Web\mongo\bin\mongo.exe,如果出现下面提示,则恭喜你已经安装成功了
D:\Web\mongo\bin>d:\Web\mongo\bin\mongo.exeMongoDB shell version: 1.4.0url: testconnecting to: testtype "exit" to exittype "help" for help>
5:注册Windows7服务,免得以后麻烦,每回要启动。再次打开CMD:D:\Web\mongo\bin\mongod.exe --dbpath="\"D:\Web\mongo\db\"" --service
如果上面的没有注册成功的话,可以修改注册表:找到项名称:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MongoDB修改ImagePath的数据如下:"D:\Web\mongo\bin\mongod.exe" --dbpath="\"D:\Web\mongo\db\"" --service修改你的路径,然后把加背景颜色的全部拷进去,标点符号不要漏掉。到这里基本上就已经注册服务成功了。
下面是测试数据库是否连接
D:\mongodb\bin>mongo.exeMongoDB shell version: 1.4.0url: testconnecting to: testtype "exit" to exittype "help" for help> use testswitched to db test> db.foo.save({id:1,name:"cztom"})> db.foo.find(){ "_id" : ObjectId("4bc1854e0140000000006f05"), "id" : 1, "name" : "cztom" }
以下是程序例子代码:需要引用MongoDB.dll和MongoDB.GridFS.dll
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace mongotest { public partial class MongoDbTest : Form { public MongoDbTest() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MongoDB.Mongo mg = new MongoDB.Mongo(); mg.Connect(); MongoDB.IMongoDatabase db = mg.GetDatabase("northwind"); MongoDB.IMongoCollection categories = db.GetCollection("categories"); MongoDB.Document category = new MongoDB.Document(); category["Name"] =textBox2.Text.Trim(); category["Price"] = textBox3.Text.Trim(); categories.Insert(category); } private void button2_Click(object sender, EventArgs e) { listBox1.Items.Clear(); MongoDB.Mongo mongo = new MongoDB.Mongo(); mongo.Connect(); MongoDB.IMongoDatabase db = mongo.GetDatabase("northwind"); IEnumerable<MongoDB.Document> categories = db.GetCollection("categories").FindAll().Documents; foreach (MongoDB.Document category in categories) { listBox1.Items.Add(""); listBox1.Items.Add("ID=" + category["_id"]); listBox1.Items.Add("Name="+category["Name"]); listBox1.Items.Add("Price=" + category["Price"]); } } private void button3_Click(object sender, EventArgs e) { listBox1.Items.Clear(); MongoDB.Mongo mongo = new MongoDB.Mongo(); mongo.Connect(); MongoDB.IMongoDatabase db = mongo.GetDatabase("northwind"); MongoDB.Document spec = new MongoDB.Document(); spec["Name"] = textBox1.Text.Trim(); MongoDB.IMongoCollection categories = db.GetCollection("categories"); MongoDB.Document category = categories.FindOne(spec); if (category != null) { string info="查找" + spec["Name"] + "Price=" + category["Price"]; if (radioButton1.Checked) { categories.Remove(category); info=info+" 同时删除"; } else if (radioButton2.Checked && textBox3.Text.Trim()!="") { category["Price"] = textBox3.Text.Trim(); categories.Save(category); info = info + " 同时修改价格为 " + category["Price"]; } listBox1.Items.Add(info); } else listBox1.Items.Add("未找取" + spec["Name"] + "的记录"); } } }
程序界面: