它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性
- 支持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.安装MongoDB.
下载mongodb-win32-i386-2.0.0.zip文件(地址:http://downloads.mongodb.org/win32/mongodb-win32-i386-2.0.0.zip),
将其解压至D:\mongodb目录中.创建D:\mongodb\data目录(用于存放数据库文件).
注:BIN目录中有以下2个文件,mongod.exe即服务器端,mongo.exe客户端(在php中用来连接mongodb它进行查询)
2.运行MongoDB
首先我们先运行服务端,打开一个CMD,输入
D:\mongodb\bin>mongod.exe -dbpath D:\mongodb\data
,这时候可以看到以下界面.(不要关掉它,将它注册为系统服务这样就不用每次启动它了).
xampp windows 安装 mongodb 2.0 mongodb使用指南
mongoDB(http://www.mongodb.org)是一种 NoSQL 的文档型的数据库管理系统,也就是说不是传统意义上的关系数据库(类似 Oracle、MS-SQLServer、MySQL等)。传统意义上的关系数据库,数据是被编码为二进制格式保存在表中的,需要用 SQL 语句去存取。 NoSQL 的文档型数据库,比如 mongoDB,就不同了。(官网)
1.安装MongoDB. 下载mongodb-win32-i386-2.0.0.zip文件(地址:http://downloads.mongodb.org/win32/mongodb-win32-i386-2.0.0.zip), 将其解压至D:\xampp\mongodb目录中.创建D:\xampp\mongodb\data目录(用于存放数据库文件).
因为我用的是xampp,所以想选择在此目录,方便管理,你可以随意选择目录。 注:BIN目录中有以下2个文件,mongod.exe即服务器端,mongo.exe客户端(在php中用来连接mongodb它进行查询)
2.运行MongoDB 首先我们先运行服务端,打开一个CMD,输入 D:\xampp\mongodb\bin>mongod.exe -dbpath D:\xampp\mongodb\data ,这时候可以看到以下界面.(不要关掉它,将它注册为系统服务这样就不用每次启动它了).
接着打开一个新的CMD控制台,运行客户端,进入D:\mongodb\bin>mongo.exe目录运行mongo.exe文件。
创建了一个javatest的表
> show dbs ;显示所有数据库(默认连接的是test数据库) 结果:
> show collections ;显示当前数据库下的使有表 > db.phptest.insert({name:'test',age:'22'}) ;向phptest表中插入数据(若表不存在则会自动创建) > db.phptset.find() ;显示phptest表中的所有数据 下面重点说明一下update db.collection.update( criteria, objNew, upsert, multi ) db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录 对应的SQL参考: select a,b from users where age=33 db.users.find({age:33},{a:1,b:1}) select * from users where age>33 and age<=40 db.users.find({'age':{$gt:33,$lte:40}}) select * from users order by name DESC db.users.find().sort({name:-1}) create index myindexname on users(name) db.users.ensureIndex({name:1}) update users set a=1 where b='q' db.users.update({b: 'q'},{$set:{a:1}},false,true) delete from users where z='abc' db.users.remove({ z: 'abc'}) 自已写的更新语句: db.phptest.update({name:'test'},{$set:{age:1000}});
3下面推荐几款Mongodb客户端管理工具
不用安装就可以试用MongoDB,和tryredis一样,是一个基于web的shell模拟工具,可以让你在不用安装MongoDB的情况下试用MongoDB的各种功能. Mongo3 – MongoDB 集群管理工具 一个windows下的客户端管理工具,我推荐这个,非常不错.有点类似于mysql管理工具.. ![]() |
4,Mongodb 与sql 语句对照
此处用mysql中的sql语句做例子,C# 驱动用的是samus,也就是上文中介绍的第一种.
引入项目MongoDB.dll
//创建Mongo连接
var mongo = new Mongo("mongodb://localhost");
mongo.Connect();
//获取一个数据库,如果没有会自动创建一个
var db = mongo.GetDatabase("movieReviews");
//创建一个列表,并为这个列表创建文档
var movies = db.GetCollection("movies");
连接没问题之后,现在让我们用mysql 与mongodb的一些语句做下对比:
MongoDB | Mysql | |
查询全部 | movies.find(new Document()) | SELECT * FROM movies |
条件查询 | movies.Find(new Document { { "title", "Hello Esr" } }); | SELECT * FROM movies WHERE title= 'foobar' |
查询数量 | movies.Find(new Document { { "title", "测试2" } }).Documents.Count(); | SELECT COUNT(*) FROM movies WHERE `title` = 'foobar' |
数量范围查询 | 1, movies.Find(new Document().Add("$where", new Code("this.num > 50"))); 2, movies.Find(new Document().Add("num", new Document().Add("$gt",50))); ($gt : > ; $gte : >= ; $lt : < ; $lte : <= ; $ne : !=) 3,movies.Find("this.num > 50"); 4,movies.Find(new Document().Add("$where",new Code("function(x){ return this.num > 50};"))); | select * from movies where num > 50 |
分页查询 | movies.Find(new Document()).Skip(10).Limit(20); | SELECT * FROM movies limit 10,20 |
查询排序语句 | movies.Find(new Document()).Sort(new Document() { { "num", -1 } }); | SELECT * FROM movies ORDER BY num DESC |
查询指定字段 | movies.Find(new Document().Add("num", new Document().Add("$gt", 50)), 10, 0, new Document() { { "title", 1 } }); | select title from movies where num > 50 |
插入语句 | movies.Insert(new Document() { { "title", "测试" }, { "resuleData", DateTime.Now } }); | INSERT INOT movies (`title`, `reauleDate`) values ('foobar',25) |
删除语句 | movies.Remove(new Document() { { "title", "Hello Esr" } }); | DELETE * FROM movies |
更新语句 | movies.Update(new Document() { { "title", "测试2" } } | UPDATE movies SET `title` = ‘测试1111’ WHERE `title` = '测试1111' |
Linq查询 | (from item in db.GetCollection("movies").Linq() | select * from movies where title like ‘%Esr’ |
这里只举出了几个比较典型的例子,可以这么说,只要mysql可以完成的sql语句,在mongodb里面都可以实现.
5.Mongodb java版驱动下载