分布式文档存储数据库 MongoDB 2.0 使用
2012-01-17 16:05
591 查看
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持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
,这时候可以看到以下界面.(不要关掉它,将它注册为系统服务这样就不用每次启动它了).
4,Mongodb 与sql 语句对照
此处用mysql中的sql语句做例子,C# 驱动用的是samus,也就是上文中介绍的第一种.
引入项目MongoDB.dll
连接没问题之后,现在让我们用mysql 与mongodb的一些语句做下对比:
这里只举出了几个比较典型的例子,可以这么说,只要mysql可以完成的sql语句,在mongodb里面都可以实现.
5.Mongodb java版驱动下载
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
面向集合存储,易存储对象类型的数据。
模式自由。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持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数据库) 结果: local test > show collections ;显示当前数据库下的使有表 > db.phptest.insert({name:'test',age:'22'}) ;向phptest表中插入数据(若表不存在则会自动创建) > db.phptset.find() ;显示phptest表中的所有数据 下面重点说明一下update db.collection.update( criteria, objNew, upsert, multi ) criteria : update的查询条件,类似sql update查询内where后面的 objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 db.test0.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条记录 db.test0.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 全更新了 db.test0.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 只加进去了第一条 db.test0.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全加进去了 db.test0.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );全更新了 db.test0.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );只更新了第一条 对应的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}}); db.phptest.find(); "_id" : ObjectId("4e70328395d1383e16a34669"), "age" : 1000, "name" : "test" } "_id" : ObjectId("4e705c63ed3cf02246b9116a"), "name" : "abc", "age" : "33" } 3下面推荐几款Mongodb客户端管理工具 Try MongoDB 不用安装就可以试用MongoDB,和tryredis一样,是一个基于web的shell模拟工具,可以让你在不用安装MongoDB的情况下试用MongoDB的各种功能. Mongo3 – MongoDB 集群管理工具 MongoVUE 一个windows下的客户端管理工具,我推荐这个,非常不错.有点类似于mysql管理工具.. |
此处用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" } } , new Document() { { "title", "测试11111" } }); | UPDATE movies SET `title` = ‘测试1111’ WHERE `title` = '测试1111' |
Linq查询 | (from item in db.GetCollection("movies").Linq() where ((string)item["title"]).StartsWith("Esr") select item); | select * from movies where title like ‘%Esr’ |
5.Mongodb java版驱动下载
相关文章推荐
- mongodb(分布式文档存储数据库)
- 分布式文档存储数据库 MongoDB
- 分布式文档存储数据库 MongoDB
- 分布式文档存储数据库 MongoDB
- 分布式文档存储数据库 MongoDB
- mongodb分布式文档存储数据库
- 分布式文档存储数据库 MongoDB
- 分布式文档存储数据库 MongoDB
- 分布式文档存储数据库(MongoDB)副本集配置
- 分布式文档存储数据库 MongoDB 简介
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- MongoDB 基于分布式文件存储的开源数据库
- MongoDB 一个基于分布式文件存储的数据库
- Mongodb 基于分布式文件存储的数据库
- 分布式文件存储数据库--MongoDB
- MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)
- MongoDB 基于分布式文件存储的数据库
- [ASP] asp.net 2.0 中使用web.config存储数据库连接字符串
- 基于分布式文件存储的数据库---MongoDB
- 分布式文件存储的数据库开源项目MongoDB