一、mongodb的介绍
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的、模式自由的文档型数据库。
二、基本的概念
1、文档:
文档是mongodb里面存储的基本单位,类似于关系型数据库里面的行,是键值对形式组合的。
{键1:值1,键2:值2}
{name:’xiaoming’,age:12,email:’nihao@sohu.com’} {name:’xiaoming’,age:’12’}
MongoDB 中以文档的方式存取记录,如一条记录格式如下:
{ “username”:”Tom”, “age”:10 } { "username":"Tom" , "age" : "10" } {“Username”:”Tom”,”age”:10}
注意:
1.以上是两个不同的文档,MongoDB区分大小写的数据类型,第一个age字段是数字类型,第二个age是字符串类型。
2. 每一个文档尺寸不能超过16M
2、集合的概念:
多个文档组合成一个集合。(类似于关系型数据库里面的表)
无模式:在一个集合里面可以存储不同格式的文档。
{name:’xiaoming’}{age:“12”,’email’:’nihao@sohu.com’}
模式自由:集合中没有行和列的概念。
MongoDB中的集合不用创建、没有结构,所以可以放不同格式的文档。
3、数据库(和关系型数据库概念类似)
多个集合组合成一个数据库,Mongodb中的数据库和Mysql中的数据库概念类似,只是无需创建。
一个数据库中可以有多个集合。一个集合中可以有多个文档。
注意:mongodb的软件架构:c /s 架构,数据存储是存储到硬盘里面的。
三、体系结构
四、安装
1、软件下载解压到指定目录
2、新建一个目录和文件
新建一个目录,用于存储数据文件,新建一个文件,用于存储日志文件
3、以管理员的方式打开cmd窗口,进入mongodb的bin目录
mongod.exe –install –-dbpath 数据库存储目录(完整路径)--logpath 日志文件的名称(完整路径)
常用的命令:
--dbpath : 数据存放目录 --logpath : 日志文件路径 --bind_ip : 绑定IP地址
--port : 监听端口号,默认27017 --maxConns : 最大并发连接数
--logappend : 日志追加到现有日志文件中,而不是覆盖 --keyFile : 复制数据时使用的私有key
--auth : 安全模式运行,登录时需要用户名密码。 --cpu : 定期显示CPU和IO的利用率
--directoryperdb : 每个数据库中的数据存在一个单独的目录中 --journal : 启动日志
--nohttpinterface : 不启动WEB服务器接口 --noscripting : 关闭 shell --repair : 修复所有的数据库
--nssize : 每个数据库的.ns文件的尺寸,默认是16M --help : 查看所有的参数项
4、启动服务
5、客户端连接服务器
默认连接本机的27017,如果要连接其他服务器,可以执行: mongo.exe ip地址:端口号/数据库名 (默认连接test数据库)
如:mongo.exe localhost:27017/abc -->连接本地27017端口,abc数据库
注:可以通过 mongo.exe –help 查看更多命令
五、常用入门命令
1、创建数据库
use 数据库名称
要注意:如果数据库名称已经存在,则是切换,如果不存在则是创建,如果创建了没有任何的一些操作,则该数据库会自动删除。
2、查询数据库
show dbs
db:可以理解成一个变量,是指当前数据库。比如要查看当前是在哪个数据库下面的操作。
3、向数据库里面添加数据
db.集合名.insert({键1:值1,键2:值2})
4、查看当前数据库下面的集合
5、删除数据库里面的数据
db.集合名.remove({条件})
6、删除数据库里面的集合
db.集合名.drop()
7、删除数据库:
db.dropDatabase()
六、基本的一些命令操作(增删改查操作)
1、添加数据
db.集合名.insert({键值对})
可以使用js的语法进行批量添加数据
for(var i=1;i<=10;i++){
db.class.insert(name:’xiaohei’+I,age:i)
}
每添加一个文档,会自动创建一个_id的键,_id的键我们也可以自己指定的,但是不能重复。
注: _id 字段是系统自动生成的,也可以自己指定任何类型的字,但值不能重复。
save操作: save操作和insert操作区别在于当遇到_id相同的情况下,save完成更新操作。insert则会报错。
在mongodb文档里面存储的数据格式有哪些?
2、删除数据
db.集合名.remove{条件}
例1:删除 class 集合中年龄等于10的文档
例2:删除class集合中年龄大于7的文档
常用操作符:
$lt , $lte , $gt , $gte ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin , $or , $not, $mod (取模), $exists, $where
3、修改数据
语法: update(条件,数据, 是否新增, 是否修改多条)
例1:修改年龄等于5的用户的名称为tom
这样改会丢失键值
使用修改器进行修改:$inc : 加一个数字 $set : 修改某一个字段,如果该字段不存在就增这个字段
例2:把用户名为xiaohei1的年龄添加10岁
4、查询数据
find( 查询条件 , 返回的键)
查询时只返回某几个字段
db.user.find({}, {"age":1}) --> 列出所有人的 age 字段
db.user.find({} , {"age": 0} ) --> 除了age字段,其他字段都列出来
例:查询年龄小于6的用户:db.user.find( {"age" : { "$lt" : 6 } } )
db.collname.count():返回集合中有多少个文档。
db.collname.find().sort({age:1})根据年龄升序
db.collname.find().sort({age:-1})根据年龄降序
例:只想显示前3个文档:db.集合名.find().limit(3)
例:显示从3个到第5个文档:db.集合名.find().skip(2).limit(3)
七、Mongodb 中管理账号
要登录使用mongodb服务器需要权限验证。
注:用户要属于某一个数据库
1、创建用户
db.addUser(用户名,密码,是否只读(只读true,默认false))
给php数据库创建一个普通的账号
创建一个管理员账号,管理员账号可以操作任何的数据库的
给php数据库创建一个普通的账号,该账号只能查询
2、权限验证
语法:db.auth(用户名,密码) --> 登录
要关闭mongodb服务器,重新安装,不用担心里面的数据会丢失
在安装时添加一个参数即可,即--auth
mongod.exe –install –dbpath 数据库存储目录 --logpath 日志文件名称 --auth
启动后,登录是不需要验证的,当切换数据库时,要进行验证,执行auth(),如果没有验证通过 ,则无法操作数据库。
具体步骤:(1)停止服务(2)卸载服务(3)重新安装(4)启动(5)登录
登录后,切换到数据库
3、查看账号、删除账号
db.system.users.find() db.system.users.remove({“user”:”test”}) 删除test 账号
八、数据库的备份
备份 :mongodump –u用户名 -p密码 -d 要备份的数据库名 -o 输出目录
查看备份的数据
恢复:mongorestore -d 恢复到的数据库名 --drop 备份文件目录
九、php支持
1、要安装php支持的扩展,扩展要注意和当前php的版本要一致
2、把对应的扩展拷贝到 php的安装目录ext下面
3、打开php.ini文件加载扩展
4、使用phpinfo函数进行测试是否加载成功
十、php中应用