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"] + "的记录");          
        }
    }
}

 

程序界面:

原文地址:https://www.cnblogs.com/JinvidLiang/p/2044504.html