学于黑马和传智播客联合做的教学项目 感谢

黑马官网:http://www.itheima.com

传智播客官网:http://www.itcast.cn

微信搜索"艺术行者",关注并回复关键词"学成在线"获取视频和教程资料!

b站在线视频:https://www.bilibili.com/video/BV1GA411v7Vo/

mongodb入门

1 mongodb安装

MongoDB 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包。

下载地址:https://www.mongodb.com/download-center#community

接下来我们使用 curl 命令来下载安装:

# 进入 /usr/local
cd /usr/local # 下载
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz # 解压
进入该目录手动解压此压缩包 # 重命名为 mongodb 目录
手动重新命名为mongodb

安装完成后,我们可以把 MongoDB 的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中:

vim ~/.bash_profile

# 将mongodb的bin目录设置到PATH变量中

2 运行 MongoDB

mongod --dbpath '/Development/MongoDB/data/db' #更改指定运行路径

因为MacOS的原因,需要指定一个/data/db目录

再打开一个终端进入执行以下命令进入命令行客户端:

mongo

客户端工具使用的DataGrip

3 mongodb入门

3.1 基础概念

在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接(MongoDB不支持)
primary key primary key 主键,MongoDB自动在每个集合中添加_id的主键

1、一个mongodb实例可以创建多个数据库

2、一个数据库可以创建多个集合

3、一个集合可以包括多个文档。

3.2 连接mongodb

mongodb的使用命令行客户端连接mongodb数据库(服务端)。

1、使用mongodb自带的javascript shell(mongo)连接

mongo

2、使用DataGrip连接

4、使用java程序连接

添加依赖:

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo‐java‐driver</artifactId>
<version>3.4.3</version>
</dependency>

测试程序:

@Test
public void testConnection(){
//创建mongodb 客户端
MongoClient mongoClient=new MongoClient("localhost",27017);
//或者采用连接字符串
//MongoClientURI connectionString = new MongoClientURI("mongodb://root:root@localhost:27017");
//MongoClient mongoClient = new MongoClient(connectionString);
//连接数据库
MongoDatabase database=mongoClient.getDatabase("test");
// 连接collection
MongoCollection<Document> collection=database.getCollection("student");
//查询第一个文档
Document myDoc=collection.find().first();
//得到文件内容 json串
String json=myDoc.toJson();
System.out.println(json);
}

3.3 数据库

1、查询数据库

show dbs 查询全部数据库
db 显示当前数据库

2、创建数据库

use DATABASE_NAME

例子:

use test02

有test02数据库则切换到此数据库,没有则创建。

注意:

新创建的数据库不显示,需要至少包括一个集合。

3、删除数据库(慎用!!!)

db.dropDatabase()

例子:

删除test02数据库
先切换数据库:use test02
再执行删除:db.dropDatabase()

3.4 集合

集合相当于关系数据库中的表,一个数据库可以创建多个集合,一个集合是将相同类型的文档管理起来。

1、创建集合

db.createCollection(name, options)
name: 新创建的集合名称
options: 创建参数

2、删除集合

db.collectionName.drop()
例子:
db.student.drop() 删除student集合

3.5 文档

3.5.1 插入文档

mongodb中文档的格式是json格式,下边就是一个文档,包括两个key:_id主键和name

{
"_id" : ObjectId("5b2cc4bfa6a44812707739b5"),
"name" : "黑马程序员"
}

插入命令:

db.COLLECTION_NAME.insert(document)

每个文档默认以_id作为主键,主键默认类型为ObjectId(对象类型),mongodb会自动生成主键值。

例子:

db.student.insert({"name":"黑马程序员","age":10})

注意:同一个集合中的文档的key可以不相同!但是建议设置为相同的。

3.5.2 更新文档

命令格式:

db.collectionName.update(
{query},
{update},
{options}
)
query:查询条件,相当于sql语句的where
update:更新文档内容
options:选项

1、替换文档

将符合条件 "name":"北京黑马程序"的第一个文档替换为{"name":"北京黑马程序员","age":10}。

db.student.update({"name":"黑马程序员"},{"name":"北京黑马程序员","age":10})

2、$set修改器

使用$set修改器指定要更新的key,key不存在则创建,存在则更新。

将符合条件 "name":"北京黑马程序"的所有文档更新name和age的值。

db.student.update({"name":"黑马程序员"},{$set:{"name":"北京黑马程序员","age":10}},{multi:true})
# multi:false表示更新第一个匹配的文档,true表示更新所有匹配的文档。

3.5.3 删除文档

命令格式:

db.student.remove({query})
# query:删除条件,相当于sql语句中的where

1、删除所有文档

db.student.remove({})

2、删除符合条件的文档

db.student.remove({"name":"黑马程序员"})

3.5.4 查询文档

命令格式:

db.collection.find(query, projection)
# query:查询条件,可不填
# projection:投影查询key,可不填

1、 查询全部

db.student.find()

2、查询符合条件的记录

查询name等为"黑马程序员"的文档。

db.student.find({"name":"黑马程序员"})

3、投影查询

只显示name和age两个key,_id主键不显示。

db.student.find({"name":"黑马程序员"},{name:1,age:1,_id:0})

3.6 用户

6.6.1 创建用户

语法格式:

db.createUser(
{
user:"username",
pwd:"password",
customData:{any information},
roles:[{role:"role", db:"database"} | "role",
...
]
}
)

例子:

创建root用户,角色为root

use admin
db.createUser(
{
user:"root",
pwd:"root",
roles:[{role:"root",db:"admin"}]
}
)

内置角色如下:

1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
6. 超级用户角色:root

3.6.2 查询用户

查询当前库下的所有用户:

show users

3.6.3 删除用户

语法格式:

db.dropUser("用户名")

例子:

删除root1用户

db.dropUser("root1")

3.6.4 修改用户

db.updateUser(
"username",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: "<cleartext password>"
},
writeConcern: { <write concern> }
)

例子:

修改root用户的角色为readWriteAnyDatabase

use admin
db.updateUser("root",{roles:[{role:"readWriteAnyDatabase",db:"admin"}]})

3.6.5 修改密码

语法格式:

db.changeUserPassword("username","newPasswd")

例子:

修改root用户的密码为123

use admin
db.changeUserPassword("root","123")

Day01_mongoDB入门的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

随机推荐

  1. 看看有哪些 Web 攻击技术.

    一.前言 HTTP 协议具有无状态.不连接.尽最大努力的特点,对于 Web 网站的攻击基本也是针对 HTTP 协议的这些特点进行的.比如无状态的特点,就要求开发者需要自行设计开发"认证&qu ...

  2. 病毒Virus

    病毒Virus 一本通P1396 病毒Virus 题目简述 给定\(k\)个被病毒感染了的字符串,知道这\(k\)个字符串原本是按字典序从小到大排列,最后给出一个待复原的字符串\(s\),要求根据上面 ...

  3. 集群搭建完成简要测试集群(性能)带宽与IOPS

    集群搭建好之后网络,raid卡策略,磁盘都会影响集群的性能.为了避免因上述问题使得集群的性能受到影响,我们依次进行测试,最后得到基本的集群性能. 网络 首先是网络,ceph集群一大堆让人摸不着头脑的问 ...

  4. ORA-12154: TNS:could not resolve the connect identifier specified. Solved.

    进入系统属性页面 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,, 并添加系统环境变量 ORACLE_HOME = ${path} TNS_ADM ...

  5. HDU 2236 无题Ⅱ

    HDU 2236 无题Ⅱ 题目大意 这是一个简单的游戏,在一个\(n*n\)的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. solution 暴枚\(i ...

  6. Python GIL(全局解释器锁)

    理解并发和并行 并行:多个CPU同时执行多个不同的多任务. 就像两个程序(进程),这两个程序是真的在不同的CPU内同时执行多个任务. 并发:CPU切换处理不同的多任务, 还是有两个程序,但只有一个CP ...

  7. gitlab-ci部署实现持续集成(centos7)

    一.gitlab安装 1. 环境准备 // selinux和 firewall 关闭 $ setenforce 0 $ sed -i "/^SELINUX/s/enforcing/disab ...

  8. GAN网络从入门教程(三)之DCGAN原理

    目录 DCGAN简介 DCGAN的特点 几个重要概念 下采样(subsampled) 上采样(upsampling) 反卷积(Deconvolution) 批标准化(Batch Normalizati ...

  9. USTC信息安全期末重点

    一.ARP协议问题1. ARP协议的作用是什么.地址解析协议,即IP地址和MAC地址之间的转换. 2. 引入ARP缓存的功能是什么.将这一映射关系保存在 ARP 缓存中,使得不必重复运行 ARP 协议 ...

  10. day44 初识数据库

    目录 一.数据的演变 二.数据库 三.MySQL 1 基本原理 2 重要概念介绍 3 安装 4 启动 5 sql基本语句 6 环境变量的配置及系统服务制作 7 关于密码 8 统一编码 9 基本sql语 ...