1116mongodb

?

一、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中应用

?

时间: 2024-10-12 12:34:37

1116mongodb的相关文章