mongodb

一、简介

1、是什么:MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。


2、特点:它的特点是高性能、易部署、易使用,存储数据非常方便。适用于大存储、高并发的网站


3、概述

(1)主要目标:高的性能,扩展强(分布式存储)

(2)面向文档的数据库

(4)以bson格式存储数据

(5)javascript作为操作语言

(6)支持多种语言:php python java c++等

(7)支持GridFs(大文件存储)

4、mongodb与mysql性能比较


5、应用范围和限制

不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。

适用于:日志系统,股票数据,等。


二、概念

1、文档

是mongoDB中数据的基本单元,类似关系数据库的行, 

多个键值对有序地放置在一起便是文档。

{1:值1,2:值2,键3:值3……………}

{ “username”:”Tom”, “age”:10 }

{ "username":"Tom" , "age" : "10" } 

{“Username”:”Tom”,”age”:10} 

注意:

①.以上是3个不同的文档,MongoDB区分大小写的数据类型,第一个age字段是数字类型,第二个age字符串类型。

②. 每一个文档尺寸不能超过16M 


2、集合

多个文档形成一个集合,集合就类似于关系型数据库里面的表。

无模式是指,在同一个集合中可以包含不同格式的文档,如:

{   "Name" : "Mongodb" ,  "Type" : "Nosql"  }

{   "UserName" : "Tom"  ,  "age"  :  20  ,  "Gender"  :  "male"  }

以上两个文档可以放在同一个集合中。

Mysql需要先建表再插入数据, 

模式自由(schema-free):意思是集合里面没有行和列的概念, 

MongoDB中的集合不用创建、没有结构,所以可以放不同格式的文档。


3、数据库

多个集合可以组成数据库。一个mongoDB实例可以承载多个数据库,他们之间完全独立。 

Mongodb中的数据库和Mysql中的数据为概念类似,只是无需创建。

一个数据库中可以有多个集合。

一个集合中可以有多个文档。


三、安装软件和卸载

1、把解压的的文件(mongodb)拷贝到指定的目录,最好是wamp目录下,以方便管理

2、新建一个data目录用于存储数据库文件,新建一个log.txt文档用于存储日志信息

3、以管理员的身份进入dos窗口,进入mongodb的bin目录下
4、使用mongod.exe 执行安装命令: mongod  --install  --logpath  指定日志文件(全路径) --dbpath  指定数据库文件存储目录
如: f:\server\mongodb\bin>mongod --install --logpath f:/server/mongodb/log.txt --dbpath f:/server/mongodb/data

说明:也可以使用会话级别无需安装直接启动mongod(在语法上少了--install)

f:\server\mongodb\bin>mongod  --logpath f:/server/mongodb/log.txt --dbpath f:/server/mongodb/data


5、安装完之后启动服务:net start mongodb,也可以通过服务界面开启

6、使用mongo.exe客户端连接mongodb服务器mongo  localhost  27017

7、卸载:在bin目录下执行:mongod  --remove


四、入门语句

1、创建数据库

语法:use 数据库名称

如:> Use user


2、创建集合(相当于sql表)

语法:db.集合名.insert({1:值1……})


3、查看数据库:show dbs


4、查看集合:show tables


5、删除集合

语法:db.集合名.drop()

如:> db.php.drop()


6、删除数据库:语法: db.dropDatabase()


7、查看帮助:help、db.help()、db.php.help()


8、for

> for(var i=1;i<9;i++){

... db.java.insert({name:"java"+i,dire:"web"+i})

... }


9常用操作符:

$lt , $lte , $gt , $gte   ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin ,  $or ,  $not, $mod (取模),  $exists, $where 

操作符用法:

如: 查询年龄小于20岁的用户

db.user.find( {"age" : { "$lt" : 20 } } )

db.php.remove({age:{‘$gt’:7}})


五、基本操作

1、添加文档

语法:db.集合名.insert({1:值1,键2:值2………..})

> db.php.insert({name:"xiaoliang",age:22,address:"guangzhou"})

> db.php.insert({name:"xiaoli",age:16,address:"muye"},{name:"woailuo",age:16,address:"sharen"})

2、删除文档

语法:db.集合名.remove({条件})   注意:如果不加条件,则删除所有的文档。

案例1:比如要删除年龄等于5的文档

db.php.remove({age:5})

案例2:要删除年龄大于7的文档

db.php.remove({age:>7})

3、修改文档

语法:db.集合名.update({条件},{新的文档})

案例1:比如把年龄等于22的文档的name改为 “xiaoshui”

>db.php.update({age:22},{name:'xialshui'})

案例2:使用修改器完成,把年龄等于3的文档的name改为 “xiaosan”,并且不能丢失其他的键值。

>db.php.update({age:16},{'$set':{name:'Shikamaru'}})

4、查看文档

(1)基本语法

db.集合名.find({条件})

案例1:查寻i等于5的文档

db.php.find({i:5})

案例2:查询i大于5的文档

>db.php.find({i:{'$gt':5}})

(2)count 数量

案例3:查询集合里面文档的数量

db.php.count(),也可加find()查询满足条件的数量

> db.php.count()

> db.php.find({i:{'$gt':5}}).count()

(3)sort 排序

案例4:根据年龄降序查询文档

db.集合名.find().sort({age:1})根据年龄升序 

db.集合名.find().sort({age:-1})根据年龄降序

> db.php.find().sort({i:1}) 根据i升序 

> db.php.find().sort({i:-1}) 根据i降序 

(4)limit   

案例5:取出前5个文档

语法:db.集合名.find().limit(5)

> db.php.find().limit(3);

5skip  偏移量

案例6:取出第2个到第5个文档。   类似于mysql   limit 偏移量 取出的数量

语法:db.集合名.find().skip(偏移量).limit(取出的数量)

>db.php.find().skip(3).limit(3); 从第三条记录开始,查询出3



六、权限验证

Mongodb权限范围说明

① 普通用户:mongodb里面的用户是属于某个数据库的,某个数据库的用户登录后只能操作所属的数据库。

② 超级用户:可以操作其他数据库和删除其他用户

1、添加用户

(1)步骤:

1)选择数据库:use  数据库     

2开始增加用户:db.addUser(用户名,密码,是否只读)   

如果为ture是只读,则该用户只能查询,无法修改。默认是 false,可以读写的。

(2)前提

在给数据库设置用户密码时,要必须先设置一个超级管理员。

添加超级管理员:

> use admin

> db.addUser(‘root’,’123456’)

user数据库添加一个管理员

> use user

> db.addUser(‘user’,’123456’)

2、权限验证生效

(1)注意:

要使用权限验证(卸载服务重新安装),如果是安装成window的一个服务则要重新安装,在重新安装时,添加一个选项--auth   (--auth 表示要使用权限验证

如果是直接启动的方式来启动mongodb的,则重新启动,在启动时,添加 --auth选项。 

f:\server\mongodb\bin>mongod --logpath f:/server/mongodb/log.txt --dbpath f:/server/mongodb/data --auth

(2)验证语法:

1use  数据库

2db.auth(用户名,密码)

> use user

> db.auth('user',123456)

3、查看用户

在那个数据库就能看到该用户的用户信息

> db.system.users.find()

4、删除用户

如果想要删除用户,则把system.users集合里面的用户对应的文档删除即可。

Db.system.users.remove({user:’xiaoliang’})


总结:

(1)非admin数据库的用户不能使用数据库命令,比如show dbs等。 

(2)admin数据库中的用户被视为超级用户(即管理员)。在认证之后,管理员可以读写所有数据库,执行特定的管理命令, 

(3)在开启安全检查之前,一定要至少有个管理员账号。 

(4)数据库的用户账号以文档的形式存储在system.users集合里面。可以在system.users集合中删掉用户账号文档,就可以删除用户。 



七、php操作mysql


安装合适的扩展

下载合适的php_mongodb.dll文件。 

(1)php的版本 

(2)是否是线程安全的thread safe(ts)

(3)是vc几的 

(4)php是32位的还是64位的。‘

2、把合适的扩展拷贝到php的安装目录的ext目录里面。

3、打开php.ini文件,引入该扩展:extension=php_mongo.dll

4、重启apache之后通过phpinfo()查看是否有mongo信息

入门使用:

(1)连接mongodb

//$m = new Mongo("mongodb://用户名:密码@主机地址:端口/选择数据库");

$m = new Mongo("mongodb://user:123456@localhost:27017/user");

 

(2)选择要操作的数据库

$db = $m -> selectDb("user");


(3)増删改查

在php中:

(3)増删改查

在php中:

. 换成 ->

 {}换成array()

① 添加文档(行)

//原:db.test.insert({name:'xiaoliang '})

//$db -> test -> insert(array('name'=>'xiaoliang','age'=>22));

 

② 查询

//原:db.test.find()

$data = $db -> test -> find();

foreach ($data as $d){

//echo "<pre>";

//var_dump($d);

echo $d['name'].'--'.$d['age'].'<br/>';

}

//查询age=25的文档:返回的是结果集,就算是一条数据也是一个二维数组

$data = $db -> test -> find(array('age'=>25));

//查询大于25的文档

$data = $db -> test -> find(array('age'=>array('$gt'=>25)));

foreach ($data as $d){ 

echo $d['name'].'--'.$d['age'].'<br/>';

}

 

③ 修改

//原:db.test.update({name:'user8'},{'$set':{age:288}})

$db -> test -> update(array('name'=>'user8'),array('$set'=>array('age'=>28)));

① 添加文档(行)

//原:db.test.insert({name:'xiaoliang '})

//$db -> test -> insert(array('name'=>'xiaoliang','age'=>22));

 

② 查询

//原:db.test.find()

$data = $db -> test -> find();

foreach ($data as $d){

//echo "<pre>";

//var_dump($d);

echo $d['name'].'--'.$d['age'].'<br/>';

}

//查询age=25的文档:返回的是结果集,就算是一条数据也是一个二维数组

$data = $db -> test -> find(array('age'=>25));

//查询大于25的文档

$data = $db -> test -> find(array('age'=>array('$gt'=>25)));

foreach ($data as $d){ 

echo $d['name'].'--'.$d['age'].'<br/>';

}

 

③ 修改

//原:db.test.update({name:'user8'},{'$set':{age:288}})

$db -> test -> update(array('name'=>'user8'),array('$set'=>array('age'=>28)));



把mysql的数据存储到mongodb中

header("content-type:text/html;charset=utf-8");
//连接mongodb数据库
$m = new Mongo("mongodb://user:123456@localhost:27017/user");
$db = $m -> selectDb("user");

/* 取出mysql数据 */
  mysql_connect("localhost","root","root");
mysql_query("set names utf8");
mysql_query("use ecshop");
$res = mysql_query("select * from ec_category");
while($row=mysql_fetch_assoc($res)){
//把遍历出来的数据直接添加到mongodb中 
$db -> category -> insert($row);
}


/* 查看存储到mongodb中的数据  */
$data = $db -> category -> find();
foreach($data as $d){
echo $d['id'].'--'.$d['ca_name']."<br/>";
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值