您的位置:首页 > 数据库 > Mongodb

mongodb快速入门

2016-08-05 22:27 239 查看
一、mongodb快速入门-基本操作

1.NoSQL(非关系型),MongoDB就是一种非关系型的数据库,MongoDB是nosql的一种产品。Member,redis等等都属于NoSQL类的产品。

关系型:就是有一对多,多对多,多对一等等的事务逻辑,可以联表操作,而非关系型就是没有这些关系,不可以进行联表操作。

MongoDB是面向文档的数据,一条记录叫做文档,多个文档叫做集合。集合相当于MySQL里的表。

MongoDB和MYSQL(关系型)最大的区别:

MongoDB无模式(无需建表,无需做数据的检查)。

MongoDB使用JavaScript语言操作,而MySQL使用SQL。

MongoDB以JSON形式保存一条记录,读、写方面性能比较快,相对数据来说:事务、视图、存储过程都没有,以少很多功能为代价。

 


 

MongoDB的扩展非常容易(用MongoDB实现分表、分库、读写分离,非常容易),只需配置一下就行。适合大数据的存储。MySQL也可以做到,但性能和维护成本比较高。所以,MongoDB非常适合存储:数据结构简单(JSON)、数据量大、高并发读写的操作。

MongoDB常用来做缓存,存在硬盘里。

2.MongoDB的操作:

首先得下载mongodb的安装包:http://pan.baidu.com/s/1o7Lw0T8

下面是分享的资源:



解压安装包到E盘,其它盘也可以。

解压后会看到下面的:



再打开bin目录

 


名称带d的就是服务器端的,不带的就是客户端。

实际操作:

1.先创建一个目录data,再在data里创建db文件夹,图中log.txt是执行命令后生成的。





2.以管理员身份运行cmd:执行mogodb中的命令, E:\mongodb\bin\mongod.exe --install --dbpath E:\mongodb\data\db --logpath E:\mongodb\data\log.txt  然后在服务窗口开启mogoDB服务。

 


因为mogodb默认没有开启验证权限的功能,所以需要以管理员的身份运行。

3.客户端:运行mongo.exe命令,使得客户端能连接上服务器

E:\mongodb\bin\mongo.exe

 


 

在里面写上javascript代码。

4.使用数据库:

(1)db变量的使用 : db是当前正在使用的数据库,默认是test

 


(2)切换数据库: use 数据库名称

Ps:只有真正往数据库里插入数据时才会创建该数据库。

(3)查看所有的数据库:show dbs

(4)如何查看都有哪些命令?帮助  系统

   A.help  系统级帮助

 


  B.db.help()  数据库级别的帮助

 


例如db.getName()  得到当前数据库的名称

     db.stats()   查看当前数据库的状态

     db.dropUser(username)  删除用户

  db.goods.drop() 删除一个集合里的所有数据

  db.dropDatabase() 删除数据库里的全部集合(删除后连用户名都删除)

C.  db.集合名字.help()    集合级别的帮助

PS:默认会有user集合,但是空的

例子1:向php34的商品集合中插入一条文档

 


 

插入的时候随便取表的名字,很随意。

例子2:查询集合中所有的商品

 


 

特点:(1)插入文档时如果文档中没有_id字段,MongoDB会自动添加该字段,该字段为ObjectId类型,值是一个字符串,该字符串全球唯一。

(2)MongoDB执行的每个操作都是瞬间完成,直接把命令发给服务器就不管了,不等待服务器,没有返回值,所以就比较快了,那么客户端就不知道有没有操作成功,如果客户想知道的话,就可以使用命令

db.runCommand({getLastError:1})

 


 

如果ok里的值为1,那就是操作成功。

(3)插入集合里的数据可以完全不相关。但官方不建议这样做

例子3:name为orange的文档的id改成10

下面这个是一条文档

 


 

 

使用findOne去查找name为orange的文档

 


 

第二种修改方法

 


 

 

例子4:将id大于10的文档的name改成hhh

 


这样只能修改一条满足条件的记录

 


 

 

必须得设置第4个参数为true,才能修改全部,第3个参数是指如果没有找到满足条件的记录,则是否要加上这条记录。

 

 

二、php操作mongodb和mongodb的权限机制

1.mongodb默认没有权限机制,要自己添加账号。

 db.addUser(用户名,密码,是否只读)  

 db.auth(用户名,密码)->登陆

例子1:添加一个超级管理员账户

use  admin  ->选择管理员数据库

db.addUser(“root”,”admin”)  ->把用户添加到admin数据库中

PS:用户要属于某一个数据库,如果一个账号属于admin数据库,那么这个用户就是超级管理员,在使用账号登陆时,必须先切换到这个账号所在的数据库。

一个账号只能操作一个数据库,就是这个账号所属于的数据库。

超级管理员可以操作任何数据库。

例子2:向sns数据库中添加一个只读的普通用户

use sns

db.addUser(“test”,”1234”,true)

只读意味着只能查询。第3个参数不传就意味者拥有所有权限。

mongodb 添加用户报错TypeError:db.addUser is not a function

原因是 新版的mongodb已经不支持addUser方法了,改成createUser了。 
2.启动权限机制
先把安装好的从服务中删掉(删除之后数据还在,并没有删除数据)
 


重新安装一个mongodb,安装时添加一个  --auto  参数,
E:\mongodb\bin\mongod.exe --install --dbpath E:\mongodb\data\db --logpath E:\mongodb\data\log.txt --auth
 


 
现在开启了权限机制.
怎样登陆到admin数据库呢?
 


 
返回1则登陆成功
 
3.用php去操作mongodb
 先要安装php_mongodb.dll,版本选择:
查看phpinfo。
 


 
 
TS(线程安全)供window使用,NTS(非线程安全)供linux使用
结合以上条件,我们应选择,然后安装即可
 


具体怎样安装扩展可参考下面的博客http://www.cnblogs.com/gzyx1988/p/5631926.html
 
php操作mongodb



 
 


三、mongodb的其它功能
1.NoSQL的优缺点
 


 
2.主从复制,分片,读写分离
主从复制,一台主服务器,其他的是从服务器,内容都一样,只是职责不同,从服务器只负责读取,主服务器负责写,这样就实现了读写分离,分担了压力。
分片就是把一个数据量大的数据分割成若干小片。
大数据
Hadoop(JAVA写的程序):提供了一套机制,可以快速的处理大数据。
分布式文件系统,将一个大文件分割成很多块存到不同的服务器。
Map(每台服务器要做的事)  reduce(每台服务器的结果怎样汇总)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mogodb