?
一、mongodb的介绍:
?
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
?
?
?
二、基本的概念
1、文档:
文档是mongodb里面存储的基本单位,类似于关系型数据库里面的行,是键值对形式组合的。
{键1:值1,键2:值2}
{name:‘xiaoming‘,age:12,email:‘[email protected]‘}
{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‘:‘[email protected]‘}
?
模式自由:集合中没有行和列的概念。
?
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(用户名,密码,是否只读)
给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的版本要一致。
vc 几的,ts线程是否安全的,
2、把对应的扩展拷贝到 php的安装目录ext下面。
3、打开php.ini文件加载扩展。
4、使用phpinfo函数进行测试是否加载成功
?
十、php中应用
?