本篇教程是有概念和操作的,如果想学会monggoDB要认真看文档和跟着操作几遍,然后有空的时候再来敲敲指令才能学会,并在项目上灵活使用它
1.认识monggoDB
1.基本介绍
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便
和mysql一样存硬盘
2.mongodb与 mysql性能比较
分别插入100万条记录,并对其做100个用户并发查询操作
数据存储方式类似一个关联数组
3.应用范围和限制
缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。
适用于:日志系统,股票数据等。
不适用于:电子商务系统等需要连多表查询的功能。
2.需要掌握的几个概念
1.文档(类似关系数据库的一行)
文档是mongoDB中数据的基本单元,类似关系数据库的一行
多个键值对有序地放置在一起便是文档
MongoDB 中以文档的方式存取记录,如:
{
“username”:”Tom”, “age”:10 ,email:’xiaobai@sohu.com’,’sex’:男,键,值}
{
"username":"Tom" , "age" : "10" }
{
“Username”:”Tom”,”age”:10}
{
“Username”:”Tom” }
注意:
(1)以上是几个不同的文档,MongoDB区分大小写的数据类型,第一个age字段是数字类型,第二个age是字符串类型。
(2)每一个文档尺寸不能超过16M
2.集合(mysql中的表)
集合就是一组文档,多个文档组成一个集合,集合类似于 mysql里面的表
2.1 无模式
是指,在同一个集合中可以包含不同格式的文档,如:
{
"Name" : "Mongodb" , "Type" : "Nosql" }
{
"UserName" : "Tom" , "age" : 20 , "Gender" : "male" }
以上两个文档可以放在同一个集合中。
在Mysql需要先建表再插入数据,
2.2模式自由(schema-free)
是指集合里面没有行和列的概念(文档里面的键值个数没有规定,可长可短)
注意:MongoDB中的集合不用创建、没有结构,所以可以放不同格式的文档。
3.数据库(和mysql的数据库概念一样的)
多个集合可以组成数据库。一个mongoDB实例可以承载多个数据库,他们之间完全独立。
Mongodb中的数据库和Mysql中的数据库概念类似,只是无需创建。
一个数据库中可以有多个集合。
一个集合中可以有多个文档。
4.mongodb的数据体系
3.安装mongodb
这里采用的是压缩包方式安装,向导程序安装方式出错的概率很大,其实我们在安装mysql
的时候也是常用下载绿色包的方式,因为简单不容易出错
1.下载绿色压缩包4.4.3版本
https://www.mongodb.com/try/download/community
2.基本目录结构
下载下来就只有如下几个文件
bin
目录下
3.查看常用的参数选项
4.启动服务端
4.1启动准备
启动服务端需要指定两个参数,如果是向导程序安装则不需要指定
选项 | 描述 |
---|---|
–dbpath | 数据库文件存放目录 |
–logpath | 日志文件路径 |
所以我们要新建data
目录和log.log
文件
4.2启动服务
进入到bin
目录执行
mongod --dbpath F:\wamp\mongodb4.4.3\data --logpath F:\wamp\mongodb4.4.3\log.log
此时启动成功,这个黑窗口不能关
重新启动一个cmd,查看端口,如果有27017则启动成功
netstat -an|findstr 27017
5.客户端连接服务
既然已经开启了服务,可通过客户端连接
命令行运行mongo.exe
即可
F:\wamp\mongodb4.4.3\bin\mongo.exe
6.配置环境变量(非必须)
如果觉得比如如下指令太长,可以配置环境变量
F:\wamp\mongodb4.4.3\bin\mongo.exe
配置好后可以直接这样就可以链接客户端,不需要进入到\mongodb4.4.3\bin\
下了
4.入门语句
1.创建数据库
语法:
use 数据库名称
注意:如果该数据库不存在,则创建,如果该数据库存在,则是切换,如果创建了数据库,没有任何的操作,则会自动删除该数据库。
2.查看数据库
语法:
show dbs
因为上面创建的php数据库没有任何操作所以会被自动删除,则查询不到php,只能查询到默认的数据库
3.创建集合
3.1显示创建
db.createCollection('集合名称');
3.2隐式创建
db.集合名.insert({
})
表示插入数据后就自动创建这个集合
4.查看集合
语法:
show tables
5.查询集合里面的文档
语法
db.集合名.find() 查询所有
db.集合名.findOne() 查询第一个文档
6.删除集合
语法:
db.集合名.drop();
7.删除数据库
语法:
use 数据库
db.dropDatabase()
8.帮助命令
有的时候不知道命令该怎么写了,记不住了,可以使用帮助命令,当然了,肯定很鸡肋的,还不如自己做好笔记
8.1全局帮助指令
语法:
help
8.2数据库相关的帮助命令
语法:
db.help()
8.3集合相关的帮助命令
语法:
db.集合名.help()
9.清屏命令
cls
10.查看当前操作的数据库
db
5.增删改查操作
1.添加文档
语法:
db.集合名.insert({
k1:’v1’,k2:’v2’…..})
注意点:
(1)文档就是键值对,数据类型是BSON
格式,支持的值更加丰富。
BSON
格式是JSON
格式的一种拓展,比JSON
类型支持的类型更多
比如:
db.集合名.insert({
name:’xiaobai’,spc:{
weight:100,address:’guangzhou’}})
(2)在添加的文档里面,都有一个’_id’的键,值为对象类型。
ObjectId类型:
每个文档都有一个_id字段,并且同一集合中的_id值唯一,该字段可
以是任意类型的数据,默认是一个ObjectId对象。
ObjectId对象对象数据组成:时间戳 |机器码|PID|计数器
_id的键值我们可以自己输入,但是不能重复
注意:在插入数据的时候,如果_id的值重复则会报错。
(3)可以使用js代码来完成批量插入文档。
for(var i=1;i<=10;i++){
db.info.insert({
name:'Jack'+i,age:i,email:'Jack'+i+'@qq.com'}) }