[MongoDB] MongoDB的基本操作以及文档的增删改查

参考视频

链接:https://pan.baidu.com/s/1tAWPEC8yppyrPupkUFdCWQ
提取码:gdn8

 
 

MongoDB的基本操作

基本概念
  • 生活中:仓库、架子、物品
  • 计算机:数据库(database) 、集合(collection) 、数据/文档(document)

 

查看数据库
  • 语法

    show databases

  • 效果
    在这里插入图片描述

  • 隐式创建,在有数据时,自动创建在这里插入图片描述

 

选择数据库
  • 语法

    use 数据库名

  • 效果在这里插入图片描述

 

删除数据库
  • 语法

    use 数据库名
    db.dropDatabase()

  • 效果在这里插入图片描述

查看集合
  • 语法

    show collections

  • 效果在这里插入图片描述

 

创建集合
  • 语法

    db.createCollection(‘集合名’)

  • 效果在这里插入图片描述

 

删除集合
  • 语法

    db.集合名.drop()

  • 效果在这里插入图片描述

 

小总结
数据库集合
查看show databasesshow collections
创建有单独的语法,但是忽略隐式创建db.createCollection(‘集合名’)
选择use 数据库名省略
删除use 数据库名;db.dropDatabase()db.集合名. drop()

 
 

MongoDB文档的增删改查(CURD)

C增
  • 语法

    • db.集合名.insert(JSON数据)
  • 说明

    • 集合存在则直接插入数据,集合不存在隐式创建
  • 练习

    • 在test2数据库的c1集合中插入数据(姓名叫webopenfather年龄18岁)
    use test2
    db. c1.insert({uname: "webopenfather",age:18})
    

    留心1:数据库和集合不存在都隐式创建
    留心2:对象的犍统一不加引号方便看, 但是查看集合数据时系统会自动加
    留心3: mongodb会给每条数据增加一个全球唯一-的id犍

    在这里插入图片描述

  • id的组成在这里插入图片描述

思考1:是否可以自定义id值?

回答:可以,只需要给插入的JSON数据增加_id键即可覆盖(但实战强烈不推荐)

db.c1.insert({_id:1, uname:"webopenfather", age:18})

在这里插入图片描述

思考2:如何一次性插入多条记录?

回答:传递数据,数组中写-个个SON数据即可

db.c1.insert([
	{uname:"z3",age:3},
	{uname:"z4",age:4},
	{uname:"w5",age:5}
])
含义:一次性插入3条数据到c1集合

在这里插入图片描述

思考3:如何快速插入10条数据

回答: mongodb底层使用JS引擎实现的,所以支持部分js语法

use test2
for(var i = 1;i<=10;i++){
	db.c2.insert({uname:"a"+i, age:i})
}

在这里插入图片描述
save也可以插入数据,如果save的数据在集合里面就直接替换更新,没有这个数据的存在就新增加一条。

 

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不等于
$inin
$ninnot in

练习1:查询所有数据

在这里插入图片描述

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

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

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

 

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

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

  • 升级语法

是否新增:指匹配不到数据则插入(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 (修改器:$set)
  • age 增加 111 (修改器:$inc)
  • who 改字段 sex (修改器:$rename)
  • other 删除 (修改器:$unset)

语法分析:

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岁

在这里插入图片描述

  • 【验证】是否修改多条true是,false否默认

在这里插入图片描述

 

D删
  • 语法:db.集合名.remove(条件 [, 是否删除一条] )

注意:是否删除一条 true是,false否 默认

在这里插入图片描述

 

小总结

高级开发攻城狮统称:所有数据库都需要增删改查CURD标识

MongoDB删除语法:remove

  • 增Create

    db.集合名.insert(JSON数据)
    
  • 删Delete

    db.集合名.remove(条件 [,是否删除一条true是false否默认])
    
    也就是默认删除多条
    
  • 改Update

    db.集合名.update(条件, 新数据  [,是否新增,是否修改多条])
    
    升级语法db.集合名.update(条件,{修改器:{键:值}})
    
  • 查Read

    db.集合名.find(条件 [,查询的列])
    

 
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值