MongoDB笔记(1)



一MongoDB简介

1.MongoDB是什么

在这里插入图片描述

2.种类 (了解):

关系型: Oracle,MySQL,SQLite,SQL Server 等

非关系型: (Not Only SQL) : MongoDB (文档) ,Redis/Memcache (内存)

关系型和非关系型数据库软件区别 :

相同点: 都是数据库软件,用来存放项目数据

不同点:

关系型:1,遵循SQL标准,换句话说语法大同小异,2.有库和表约束等

非关系型: 1 ,没有统一标准,2.一般键值对形式存储,3.读取速度更快

二 MongoDB安装

步骤1:下载 https://www.mongodb.com/download-center/communtiy
步骤2: 解压
步骤3:创建服务

bin/mongod.exe --install --dbpath 磁盘路径 --logpath 日志路径

留心1:比如通过管理员身份运行DOS窗口 否则没有权限 创建失败
留心2:得提前创建数据和日志存放目录
步骤4: 、启动服
[X] net start mongodb
步骤5:登录 (验证是否安装成功)
[X] bin/mongo 打开
[X] exit 退出

周边语法
步骤1:下载 https://www.mongodb.com/download-center/communtiy
步骤2: 解压
步骤3:创建服务

bin/mongod.exe --install --dbpath 磁盘路径 --logpath 日志路径

留心1:比如通过管理员身份运行DOS窗口 否则没有权限 创建失败
留心2:得提前创建数据和日志存放目录
步骤4: 、启动服
[X] net start mongodb
步骤5:登录 (验证是否安装成功)
[X] bin/mongo 打开
[X] exit 退出

周边语法
在这里插入图片描述

三.MongoDB基本操作

1.基本概念

● 生活中:仓库,架子,物品
● 计算机:数据库(database),集合(collection),数据/文档(document)

2.查看数据库

语法:show databases
效果:
在这里插入图片描述

3.选择数据库 !!!

语法:use 数据库名
效果在这里插入图片描述

4.查看集合

语法:show collections
效果
在这里插入图片描述

5.创建集合

语法:db.createCollection(‘集合名’)
效果
在这里插入图片描述

6.删除集合

语法:db.集合名.drop()
效果
在这里插入图片描述

思考:如何删除数据库?
回答:1 通过use语法选择数据库,2通过db.dropDatabase()删除数据库

7.小总结

查看:show databases
创建:有单独的语法,但是忽略 隐式创建
选择:use 数据库名
删除:1通过use选中数据库, 2通过db.dropDatabase( )删除数据库

集合 (查看,创建,删除)
查看:show collections
创建:db.createCollection(‘集合名’) 多学一招:忽略 后期插入数据 隐式创建集合
删除:db.集合名》drop ( )

4.MongoDB文档增删修查(CURD)

1.C增

语法:db.集合名.insert (JSON数据)
说明:集合存在-则直接插入数据,集合不存在-隐式创建
练习:在test2数据库的c1集合中插入数据 (姓名叫webopenfather年龄18岁)

[X] use test2
[X] db. c1. insert( { uname:“webopenfather”, age:18})

留心1:数据库和集合不存在都隐式创建
留心2:对象的键统一不加引号方便看,但是查看集合数据时系统会自动加
留心3:mongodb会给每条数据增加一个全球唯一的__id键
在这里插入图片描述

多学一招:——id的组成
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
时间戳 | 机器 | PID |计数器

思考1:是否可以自定义_id值?
回答:可以,只需要给插入的JSON数据增加_id键即可覆盖 (但实战强烈不推荐)
[ ] db. c1. insert( { _id : 1 , uname:“webopenfather”, age:18})
[ ] 在这里插入图片描述

思考2:如何一次性插入多条记录?
回答:传递数据,数组中写一个个JSON数据即可
db.c1.insert( [
{uname:“z3”, age:3},
{uname:“z4”, age:4},
{uname:“w3”, age:5}
]},

含义:一次性插入3条数据到c1集合
在这里插入图片描述

思考3:如何快速插入10条数据
回答:mongodb底层使用js引擎实现的,所以支持部分js语法
因此:可以写for循环
for (var i =1; i<=10;i++) {
print(i)
}

需求:在test2数据库c2集合中插入10条数据,分别为 a1 a2 …a10
for (var i =1; i<=10;i++) {
db.c2.insert({uname: “a”+i, age: i})
}
在这里插入图片描述

2.R查

基础语法:db.集合名.find(条件 [查询的列])
条件
查询所有数据 {或者不写}
查询age=6的数据 {age : 6}
既要age=6又要性别=男 {age : 6 , sex : ‘男’ }

查询的列 (可选参数
不写 - 这查询全部列 (字段
{age: 1} 只显示age列 (字段
{age: 0} 除了 age列 (字段都显示
留心:不管你怎么写系统自定义的__id都会在

升级语法
db.集合名.find({键:值}) 注: 值不直接写
{运算符:值}
db.集合名.find({
键:{运算符:值}
}
运算符 作用
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in in
$nin not in
练习1:查询所有数据
在这里插入图片描述

练习2:查询年龄大于5岁的数据?
在这里插入图片描述

练习3:查询年龄是5岁,8岁,10岁的数据?
在这里插入图片描述

练习4:只看年龄列,或者年龄以外的列 (——id别管它)?
在这里插入图片描述

3.U改

基础语法:db.集合名.update (条件,新数据 [,是否新增, 是否修改多条]}

是否新增:指条件匹配不到数据则插入(true是插入,false否不插入默认)
是否修改多条:指将匹配成功的数据都修改 (true是, false否默认)

升级语法
db.集合名.update (条件,新数据)
{修改器:{键:值}}
运算符 作用
$inc 递增
$rename 重命名列
$set 修改列值
$unset 删除列
准备工作
use test2;
for(var i = 1; i<=10; i++) {
db.c3.insert( {“uname”: “zs”+i,“age”: i } );
}
练习1:将{uname:“zs1”}改为{uname: “zs2”}
在这里插入图片描述

发现:默认不是修改,而是替换
解决:使用升级语法 修改器
需求:使用修改器将zs4的姓名改为zs44
语法:db.c3.update({uname: “zs4”}, {$set: {uname: “zs44”}})
在这里插入图片描述

练习2:给{uname:“zs10”}的年龄加2岁或者减2岁

在这里插入图片描述


在这里插入图片描述

练习3: 修改器综合练习
插入数据:db.c4.insert( {uname:“神龙教主”,age:888,who:“男”,other:“非国人”});
完成需求:
uname 改成 webopenfather (修改器: s e t ) a g e 增 加 111 ( 修 改 器 : set ) age 增加 111 (修改器: setage111inc)
who 改字段 sex (修改器:$rename)
other 删除 (修改器: $unset)
语法分析:

```javascript
db.c4.update( {uname:"神龙教主"},  {uname:  "webopenfather" })  #错误,替换
{$set: {uname: "webopenfather"}}
{$inc: {age: 111}}
{$rename: {who: "sex"}}
{$unset: {other: true}}

留心如何一次性写多个修改器
db.c4.update( {uname:"神龙教主"},  {
$set: {uname: "webopenfather"},
$inc: {age: 111},
$rename: {who: "sex"},
$unset: {other: true}
         } )
 

**练习4:验证语法最后两个参数 (了解)**
  【验证】是否新增true 是false否:修改uname 等于 zs30的年龄 30岁
![在这里插入图片描述](https://img-blog.csdnimg.cn/f9d47789f57240f59e828c26aada0a52.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lq655Sf6Ium6Iul5aaC5Yid6KeB,size_20,color_FFFFFF,t_70,g_se,x_16)


  【验证】是否修改多条true是, false 否默认
![在这里插入图片描述](https://img-blog.csdnimg.cn/05eceae206344c75a332ffe628360af6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lq655Sf6Ium6Iul5aaC5Yid6KeB,size_20,color_FFFFFF,t_70,g_se,x_16)

#D删

语法:db.集合名.remove(条件[,是否删除一条])
作用:是否删除一条 true是,false否 默认
![在这里插入图片描述](https://img-blog.csdnimg.cn/67e0e4c4724a45949f42947ce1920305.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lq655Sf6Ium6Iul5aaC5Yid6KeB,size_20,color_FFFFFF,t_70,g_se,x_16)

小总结

高价开发工程师统称:所有数据库都需要增删改查CURD标识
MongoDB删除语法: remove
增Create
db.集合名.insert (JSON数据)
删Delete
db.集合名.remove (条件  [ , 是否删除一条true是false否])
也就是默认删除多条
改Update
db.集合名.update(条件,  新数据   [ , 是否新增,是否修改多条] )
升级语法db . 集合名.update( 条件,  {修改器 : {键:值 } } )
查Read
db.集合名.find( 条件  [ ,查询的列 ]  )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值